繁体   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