Пошаговое руководство. Сериализация коллекций стандартных типов с использованием атрибута DesignerSerializationVisibilityAttribute
Пользовательские элементы управления, иногда будет предоставлять коллекции как свойство. В этом пошаговом руководстве демонстрируется использование DesignerSerializationVisibilityAttribute класс для управления способом сериализации коллекции во время разработки. Применение Content значение для свойства коллекции гарантирует, что будет сериализовано свойство.
Чтобы скопировать код из этого раздела единым блоком, см. раздел Практическое руководство. Сериализация коллекций стандартных типов с использованием атрибута DesignerSerializationVisibilityAttribute.
Note
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих параметров или выпуска. Чтобы изменить параметры, выберите в меню Сервис пункт Импорт и экспорт параметров . Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки Visual Studio.
Предварительные требования
Для выполнения данного пошагового руководства требуется:
- Разрешения, необходимые для создания и выполнения проектов приложений Windows Forms на компьютере, на котором установлена Visual Studio.
Создание элемента управления, который имеет коллекцию сериализуемый
Первым шагом является создание элемента управления, имеющего сериализуемые коллекции как свойство. Можно изменить содержимое этой коллекции с помощью редактор коллекции, к которому можно получить из свойства окна.
Создание элемента управления с сериализуемой коллекцией
Создайте проект библиотеки элементов управления Windows с именем
SerializationDemoControlLib
. Дополнительные сведения см. в разделе шаблон библиотеки элементов управления Windows.Переименуйте
UserControl1
дляSerializationDemoControl
. Дополнительные сведения см. в разделе переименование рефакторинга кода символа.В свойства окна, установите для параметра Padding.All свойства
10
.Место TextBox контролировать
SerializationDemoControl
.Выберите элемент управления TextBox. В свойства окна, задайте следующие свойства.
Свойство Измените на Multiline true
Dock Fill ScrollBars Vertical ReadOnly true
В редактор кода, объявите поле строкового массива с именем
stringsValue
вSerializationDemoControl
.// This field backs the Strings property. private String[] stringsValue = new String[1];
Определение
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();
}
}
Нажмите клавишу F5, чтобы собрать проект и запустить элемент управления в тестовом контейнере элементов управления.
Найти
Strings
свойство в PropertyGrid из тестовом контейнере элементов управления. Нажмите кнопкуStrings
свойство, нажмите кнопку обзора () кнопку, чтобы открыть редактор коллекции строк.Введите несколько строк в редактор коллекции строк. Разделяйте их, нажав клавишу ВВОД в конце каждой строки. Нажмите кнопку ОК при завершении.
Note
Строки отображаются в TextBox из SerializationDemoControl
.
Сериализация свойства коллекции
Для тестирования поведения сериализации элемента управления, вы поместите его на форму и изменить содержимое коллекции с редактор коллекции. Вы увидите состояния сериализации, просмотрев специальный файл конструктора, в который конструктор Windows Forms выдает код.
Для сериализации коллекции
Добавьте в решение проект приложения Windows. Задайте для проекта имя
SerializationDemoControlTest
.В элементов, найдите вкладку с именем компоненты SerializationDemoControlLib. На этой вкладке вы найдете
SerializationDemoControl
. Дополнительные сведения см. в разделе Пошаговое руководство: Автоматическое заполнение панели элементов пользовательскими компонентами.Место
SerializationDemoControl
в форме.Найти
Strings
свойство в свойства окна. Нажмите кнопкуStrings
свойство, нажмите кнопку обзора () кнопку, чтобы открыть редактор коллекции строк.Введите несколько строк в редактор коллекции строк. Разделяйте их, нажав клавишу ВВОД в конце каждой строки. Нажмите кнопку ОК при завершении.
Note
Строки отображаются в TextBox из SerializationDemoControl
.
В обозревателе решений нажмите кнопку Показать все файлы.
Откройте Form1 узла. Ниже это файл с именем Form1.Designer.cs или Form1.Designer.vb. Это файл, в который конструктор Windows Forms выдает код, представляющий состояние разработки формы и его дочерним элементам. Откройте этот файл в редакторе кода.
Откройте область, называемую код, созданный конструктором форм Windows и найдите раздел serializationDemoControl1. Под этой метки — это код, представляющий сериализованное состояние элемента управления. Строки, введенного в шаге 5 будут отображаться в операторе присваивания для
Strings
свойство. В следующих примерах кода в C# и Visual Basic, Показывать код, аналогичны тем, что отображается при вводе строки «red», «оранжевый» и «желтый».this.serializationDemoControl1.Strings = new string[] { "red", "orange", "yellow"};
Me.serializationDemoControl1.Strings = New String() {"red", "orange", "yellow"}
В редактор кода, измените значение свойства DesignerSerializationVisibilityAttribute на
Strings
свойства Hidden.[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
Перестройте решение и повторите шаги 3 и 4.
Note
В этом случае конструктор Windows Forms не выдает назначения Strings
свойство.
Следующие шаги
Когда вы знаете, как для сериализации коллекции стандартных типов, рассмотрите возможность более глубоко интеграции пользовательских элементов управления в среду разработки. Как улучшить интеграцию разработки пользовательских элементов управления в следующих разделах:
См. также
- DesignerSerializationVisibilityAttribute
- Общие сведения о сериализации конструктора
- Практическое руководство. Сериализация коллекций стандартных типов с использованием атрибута DesignerSerializationVisibilityAttribute
- Пошаговое руководство: Автоматическое заполнение панели элементов пользовательскими компонентами