Я создал пользовательский элемент управления, где я предоставляю поддержку во время разработки.Я предоставляю соответствующие свойства, и мои обязательные дочерние элементы управления правильно сохраняются в родительской форме, содержащей пользовательский элемент управления.
В событии загрузки формы мне необходимо заново создать определенные дочерние элементы управления из свойства "MenuItems"(см. код ниже), который сохранился.Событие Load срабатывает правильно каждый раз, когда форма открывается в Visual Studio IDE.При первом открытии формы коллекция правильно содержит все ожидаемые элементы.Однако, когда я снова открываю форму в том же сеансе Visual Studio, коллекция становится пустой.Событие Load срабатывает, но постоянная коллекция пуста.Если я закрою Visual Studio и снова открою форму, коллекция снова правильно отобразит ожидаемое количество элементов.
Ниже приведен соответствующий код.Я использую сторонний DevExpress NavBarControl, где я перестраиваю пункты меню из постоянной коллекции.Элементы - это код, сгенерированный в родительской форме (MenuItems - это коллекция, которая сохраняется):
public partial class MyUserControl : UserControl
{
private List<NavBarItem> menuItems = new List<NavBarItem>(15);
[Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public List<NavBarItem> MenuItems
{
get
{
return this.menuItems;
}
}
public MyUserControl()
{
InitializeComponent();
}
private void NavOptionsControl_Load(object sender, EventArgs e)
{
foreach (NavBarItem item in this.menuItems)
{
NavBarItemLink link = new NavBarItemLink(item);
this.navBarGroup.ItemLinks.Add(item);
item.LinkClicked += new NavBarLinkEventHandler(NavBarItem_LinkClicked);
}
}
}