Show / Hide Table of Contents

Пошаговое руководство. Сериализация коллекций стандартных типов с использованием атрибута DesignerSerializationVisibilityAttribute

Пользовательские элементы управления, иногда будет предоставлять коллекции как свойство. В этом пошаговом руководстве демонстрируется использование DesignerSerializationVisibilityAttribute класс для управления способом сериализации коллекции во время разработки. Применение Content значение для свойства коллекции гарантирует, что будет сериализовано свойство.

Чтобы скопировать код из этого раздела единым блоком, см. раздел Практическое руководство. Сериализация коллекций стандартных типов с использованием атрибута DesignerSerializationVisibilityAttribute.

Note

Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих параметров или выпуска. Чтобы изменить параметры, выберите в меню Сервис пункт Импорт и экспорт параметров . Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки Visual Studio.

Предварительные требования

Для выполнения данного пошагового руководства требуется:

  • Разрешения, необходимые для создания и выполнения проектов приложений Windows Forms на компьютере, на котором установлена Visual Studio.

Создание элемента управления, который имеет коллекцию сериализуемый

Первым шагом является создание элемента управления, имеющего сериализуемые коллекции как свойство. Можно изменить содержимое этой коллекции с помощью редактор коллекции, к которому можно получить из свойства окна.

Создание элемента управления с сериализуемой коллекцией

  1. Создайте проект библиотеки элементов управления Windows с именем SerializationDemoControlLib. Дополнительные сведения см. в разделе шаблон библиотеки элементов управления Windows.

  2. Переименуйте UserControl1 для SerializationDemoControl. Дополнительные сведения см. в разделе переименование рефакторинга кода символа.

  3. В свойства окна, установите для параметра Padding.All свойства 10.

  4. Место TextBox контролировать SerializationDemoControl.

  5. Выберите элемент управления TextBox. В свойства окна, задайте следующие свойства.

    Свойство Измените на
    Multiline true
    Dock Fill
    ScrollBars Vertical
    ReadOnly true
  6. В редактор кода, объявите поле строкового массива с именем stringsValue в SerializationDemoControl.

    // This field backs the Strings property.
    private String[] stringsValue = new String[1];
    
  7. Определение Strings свойство SerializationDemoControl.

Note

Content Значение используется для включения сериализации коллекции.

// When the DesignerSerializationVisibility attribute has
// a value of "Content" or "Visible" the designer will 
// serialize the property. This property can also be edited 
// at design time with a CollectionEditor.
[DesignerSerializationVisibility( 
    DesignerSerializationVisibility.Content )]
public String[] Strings
{
    get
    {
        return this.stringsValue;
    }
    set
    {
        this.stringsValue = value;

        // Populate the contained TextBox with the values
        // in the stringsValue array.
        StringBuilder sb = 
            new StringBuilder(this.stringsValue.Length);

        for (int i = 0; i < this.stringsValue.Length; i++)
        {
            sb.Append(this.stringsValue[i]);
            sb.Append("\r\n");
        }

        this.textBox1.Text = sb.ToString();
    }
}
  1. Нажмите клавишу F5, чтобы собрать проект и запустить элемент управления в тестовом контейнере элементов управления.

  2. Найти Strings свойство в PropertyGrid из тестовом контейнере элементов управления. Нажмите кнопку Strings свойство, нажмите кнопку обзора (экрана VisualStudioEllipsesButton) кнопку, чтобы открыть редактор коллекции строк.

  3. Введите несколько строк в редактор коллекции строк. Разделяйте их, нажав клавишу ВВОД в конце каждой строки. Нажмите кнопку ОК при завершении.

Note

Строки отображаются в TextBox из SerializationDemoControl.

Сериализация свойства коллекции

Для тестирования поведения сериализации элемента управления, вы поместите его на форму и изменить содержимое коллекции с редактор коллекции. Вы увидите состояния сериализации, просмотрев специальный файл конструктора, в который конструктор Windows Forms выдает код.

Для сериализации коллекции

  1. Добавьте в решение проект приложения Windows. Задайте для проекта имя SerializationDemoControlTest.

  2. В элементов, найдите вкладку с именем компоненты SerializationDemoControlLib. На этой вкладке вы найдете SerializationDemoControl. Дополнительные сведения см. в разделе Пошаговое руководство: Автоматическое заполнение панели элементов пользовательскими компонентами.

  3. Место SerializationDemoControl в форме.

  4. Найти Strings свойство в свойства окна. Нажмите кнопку Strings свойство, нажмите кнопку обзора (экрана VisualStudioEllipsesButton) кнопку, чтобы открыть редактор коллекции строк.

  5. Введите несколько строк в редактор коллекции строк. Разделяйте их, нажав клавишу ВВОД в конце каждой строки. Нажмите кнопку ОК при завершении.

Note

Строки отображаются в TextBox из SerializationDemoControl.

  1. В обозревателе решений нажмите кнопку Показать все файлы.

  2. Откройте Form1 узла. Ниже это файл с именем Form1.Designer.cs или Form1.Designer.vb. Это файл, в который конструктор Windows Forms выдает код, представляющий состояние разработки формы и его дочерним элементам. Откройте этот файл в редакторе кода.

  3. Откройте область, называемую код, созданный конструктором форм Windows и найдите раздел serializationDemoControl1. Под этой метки — это код, представляющий сериализованное состояние элемента управления. Строки, введенного в шаге 5 будут отображаться в операторе присваивания для Strings свойство. В следующих примерах кода в C# и Visual Basic, Показывать код, аналогичны тем, что отображается при вводе строки «red», «оранжевый» и «желтый».

    this.serializationDemoControl1.Strings = new string[] {
            "red",
            "orange",
            "yellow"};
    
    Me.serializationDemoControl1.Strings = New String() {"red", "orange", "yellow"}
    
  4. В редактор кода, измените значение свойства DesignerSerializationVisibilityAttribute на Strings свойства Hidden.

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
    
    <DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
    
  5. Перестройте решение и повторите шаги 3 и 4.

Note

В этом случае конструктор Windows Forms не выдает назначения Strings свойство.

Следующие шаги

Когда вы знаете, как для сериализации коллекции стандартных типов, рассмотрите возможность более глубоко интеграции пользовательских элементов управления в среду разработки. Как улучшить интеграцию разработки пользовательских элементов управления в следующих разделах:

  • Архитектура времени разработки

  • Атрибуты в элементах управления Windows Forms

  • Общие сведения о сериализации конструктора

  • Пошаговое руководство: Создание элемента управления Windows Forms, используются преимущества функций Visual Studio во время разработки

См. также

  • DesignerSerializationVisibilityAttribute
  • Общие сведения о сериализации конструктора
  • Практическое руководство. Сериализация коллекций стандартных типов с использованием атрибута DesignerSerializationVisibilityAttribute
  • Пошаговое руководство: Автоматическое заполнение панели элементов пользовательскими компонентами
Back to top Неофициальная документация по .NET на русском языке. Лицензия: CC-BY 4.0. Основано на документации по .NET с Microsoft Docs
Generated by DocFX