Индексирование в коллекцию элементов управления на вкладке Control


У меня есть приложение c# Forms tab. Каждая страница имеет меню слева (панель навигации в стиле Outlook) и панель справа для содержимого.

Если мне нужна панель содержимого для tab page 0, как мне ее извлечь? Я немного озадачен, потому что не знаю, как индексировать коллекцию элементов управления на странице вкладки. Следующее подчеркнуто красным, поэтому я считаю, что это неправильно.

Panel panel = tabControl.TabPages[0].Controls["Panel"];

EDIT: удалить окно в панели sub question. Он будет перенесен в отдельную комнату. вопрос.

Извините за вопросы для начинающих. Я C / C++ парень с большим количеством времени MFC, и C# UI немного разочаровывает в данный момент.

4 2

4 ответа:

foreach (Control control in tabControl1.TabPages[0].Controls)
{
    // if (control.Name == "panel1")
}

Вы всегда можете вызвать это рекурсивно на control.Controls, чтобы найти элемент управления в любой Иерархии. control.Name можно использовать для поиска вашего конкретного элемента управления.

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

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

Form2 frm2 = new Form2();
frm2.Show(); 

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

Finally, how does one display a Window in a Panel? - ты же не хочешь этого делать. Если вы хотите, чтобы окно и панель совместно использовали часть функциональности пользовательского интерфейса, создайте пользовательский элемент управления со всеми функциональными возможностями, а затем вы можете разместить его в форме или на панели.

Возможность инкапсулировать сложное содержимое пользовательского интерфейса заключается в создании UserControl. Таким образом, вы можете создать повторно используемый фрагмент сложного пользовательского интерфейса, который вы можете добавить в виде "большого двоичного объекта" внутри формы.

Причина, по которой

Panel panel = tabControl.TabPages[0].Controls["Panel"];

Подчеркнуто красным, потому что коллекция Controls возвращает a Control который может быть Panel, но также может быть и чем-то другим. Поэтому вам нужно бросить его:

Panel panel = tabControl.TabPages[0].Controls["Panel"] as Panel;
if (panel != null)
{
     // got a panel here so do something
}

Также: MSDN имеет некоторые хорошие ресурсы - вы должны использовать его.