Проверьте, открыт ли пользовательский элемент управления - PullRequest
0 голосов
/ 02 апреля 2011

Я использую WinForm C # У MainForm есть одна панель, где.мои пользовательские элементы управления Inventory и Sell открываются на панели.panel1.Controls.Add (инвентаризации);Как проверить, открыты ли пользовательские элементы управления?Когда я проверяю это, я хочу добавить tabControl.Но я не знаю, как добавить элементы управления tabPage, не закрывая пользовательский элемент управления.Спасибо

Ответы [ 2 ]

3 голосов
/ 04 апреля 2011

Я имею в виду, если пользовательский элемент управления уже добавлен в panel1.Controls. Если его добавить, дал имя пользовательского элемента управления
- Кислота

Как пользовательский элемент управления может быть добавлен к panel1.Controls без вашего ведома? И если вы добавили его самостоятельно, вы уже должны знать имя пользовательского элемента управления.

Таким образом, все, что вам нужно сделать, это перебрать элементы управления в panel1.Controls и посмотреть, найдете ли вы свой пользовательский элемент управления. Например:

foreach (Control ctrl in panel1.Controls)
{
    if (ctrl.Name == myUserControl)
    {
        // Found the control!
        // (do something here...)
    }
}

В качестве альтернативы, если вы по какой-либо причине не знаете имя элемента управления, вы все равно можете найти все элементы управления типа UserControl, которые были добавлены в коллекцию элементов управления панели. Вот так:

foreach (Control ctrl in panel1.Controls)
{
    if (ctrl is UserControl)
    {
        // Found a UserControl!
        // (do something here...)
    }
}

Помните, что свойство Tag , предоставляемое для каждого элемента управления, дает вам возможность однозначно идентифицировать его. Вы также можете проверить это свойство на совпадения, если не знаете его имени.

0 голосов
/ 02 апреля 2011

Не уверен, что вы подразумеваете под open, но вы можете обработать событие ControlAdded в классе Panel для захвата при добавлении элемента управления ...

panel1.ControlAdded += new ControlEventHandler(p_ControlAdded);
...