Я создал пользовательский элемент управления, в котором обеспечиваю поддержку во время разработки. Я показываю соответствующие свойства, и требуемые мной дочерние элементы управления правильно сохраняются в родительской форме, содержащей пользовательский элемент управления.
В событии загрузки формы мне нужно воссоздать определенные дочерние элементы управления из свойства 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);
}
}
}