我創建了一個用戶控件,我在這裏提供設計時支持。我公開適當的屬性,並且我所需的子控件正確地保存在包含用戶控件的父窗體中。WinForms用戶控件在設計時加載事件並訪問持久屬性
在窗體的加載事件中,我需要從持久化的「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);
}
}
}
只是爲了驗證,你會處理表單,並在以後創建一個新表單,更正嗎? – user978122
我的問題是關於設計時間,而不是運行時間。我正在討論在Visual Studio Designer中打開父窗體,其中此父窗體包含我的用戶控件。 – Elan