Пользовательский элемент управления WinForms Событие загрузки и доступ к сохраненным свойствам во время разработки

Я создал пользовательский элемент управления, в котором обеспечиваю поддержку во время разработки. Я показываю соответствующие свойства, и требуемые мной дочерние элементы управления правильно сохраняются в родительской форме, содержащей пользовательский элемент управления.

В событии загрузки формы мне нужно воссоздать определенные дочерние элементы управления из свойства MenuItems (см. Код ниже), которое сохранилось. Событие Load срабатывает правильно каждый раз, когда форма открывается в Visual Studio IDE. При первом открытии формы коллекция правильно содержит все ожидаемые элементы. Однако, когда я снова открываю форму позже в том же сеансе 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);
        }
    }
}

person Elan    schedule 16.11.2011    source источник
comment
Просто для проверки вы избавляетесь от формы и создаете новую позже, верно?   -  person user978122    schedule 16.11.2011
comment
Мой вопрос касается времени разработки, а не времени выполнения. Я говорю об открытии родительской формы в Visual Studio Designer, где эта родительская форма содержит мой пользовательский элемент управления.   -  person Elan    schedule 16.11.2011


Ответы (1)


Вы пробовали событие макета? или, возможно, событие рисования?

person Richard Brightwell    schedule 16.11.2011
comment
Пробовал сейчас после вашего предложения. Событие макета запускается несколько раз. В моем случае краска стреляет только один раз, так что я с этим согласен. Спасибо. - person Elan; 16.11.2011