C# Сохранить значения коллекции в UserControl

При создании своего пользовательского контрола обычные публичные свойства сохраняются автоматически.
Но со свойствами коллекций не все так просто.
Дело в том, что в момент проектирования формы вы можете задать значения в контроле созданном из Вашего UserControl, но эти значения будут видны только до перезагрузки формы.
В момент выполнения они тоже пропадут, так как сохраняется только сам элемент на форме, а значения коллекции не сохраняются.
Возникает вопрос

Как сохранить значения коллекции в свойстве UserControl, введенные в момент проектирования, чтобы они сохранились на момент выполнения?

Для этого, кроме прочих атрибутов свойства для редактирования коллекции, должен быть обязательно установлен атрибут:
DesignerSerializationVisibility(DesignerSerializationVisibility.Content)

Например, если Ваш UserControl имеет вложенный ComboBox и Вы хотите заполнить и сохранить список значений в этом комбобоксе, то можно использовать такое свойство:
[Editor("System.Windows.Forms.Design.ListControlStringCollectionEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
, typeof(UITypeEditor))
,Browsable(true)
,DesignerSerializationVisibility(DesignerSerializationVisibility.Content)
,EditorBrowsable(EditorBrowsableState.Always)
,Bindable(true)
]
public ComboBox.ObjectCollection Items
{
get{ return ctrlСomboBox.Items; }
}


Оставить комментарий