[英]WinForms user control Load event and access to persisted properties at design time
我創建了一個用戶控件,在其中提供設計時支持。 我公開了適當的屬性,並且所需的子控件已正確保留在包含用戶控件的父窗體中。
在表單的load事件中,我需要從持久化的“ 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);
}
}
}
您是否嘗試過布局活動? 還是油漆事件?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.