2011-11-16 37 views
0

我創建了一個用戶控件,我在這裏提供設計時支持。我公開適當的屬性,並且我所需的子控件正確地保存在包含用戶控件的父窗體中。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); 
     } 
    } 
} 
+0

只是爲了驗證,你會處理表單,並在以後創建一個新表單,更正嗎? – user978122

+0

我的問題是關於設計時間,而不是運行時間。我正在討論在Visual Studio Designer中打開父窗體,其中此父窗體包含我的用戶控件。 – Elan

回答

1

您是否嘗試過佈局的事件嗎?或者可能是繪畫事件?

+0

在您的建議後嘗試它。佈局事件被激發了好幾次。在我的情況下,Paint看起來只會被解僱一次,所以會隨之而來。謝謝。 – Elan

+0

很高興幫助。 –

相關問題