簡體   English   中英

WinForms用戶控件Load事件和在設計時訪問持久屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM