我创建了一个用户控件,我在那里提供设计时支持。我公开了适当的属性,并且我所需的子控件正确地保存在包含用户控件的父窗体中。
在表单的加载事件中,我需要从" MenuItems"重新构建某些子控件。持久存在的属性(见下面的代码)。每次在Visual Studio IDE中打开表单时,Load事件都会正确触发。第一次打开表单时,集合正确包含所有预期的项目。但是,当我稍后在同一个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);
}
}
}
答案 0 :(得分:1)
您是否尝试过布局活动?或者可能是油漆事件?