Пользовательский элемент управления WinForms Загрузка события и доступ к сохраненным свойствам во время разработки - PullRequest
0 голосов
/ 16 ноября 2011

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

В событии загрузки формы мне необходимо заново создать определенные дочерние элементы управления из свойства "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);
        }
    }
}

1 Ответ

1 голос
/ 16 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...