Индексирование в коллекцию элементов управления на вкладке Control
У меня есть приложение c# Forms tab. Каждая страница имеет меню слева (панель навигации в стиле Outlook) и панель справа для содержимого.
Если мне нужна панель содержимого для tab page 0, как мне ее извлечь? Я немного озадачен, потому что не знаю, как индексировать коллекцию элементов управления на странице вкладки. Следующее подчеркнуто красным, поэтому я считаю, что это неправильно.
Panel panel = tabControl.TabPages[0].Controls["Panel"];
EDIT: удалить окно в панели sub question. Он будет перенесен в отдельную комнату. вопрос.
Извините за вопросы для начинающих. Я C / C++ парень с большим количеством времени MFC, и C# UI немного разочаровывает в данный момент.
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
возвращает aControl
который может бытьPanel
, но также может быть и чем-то другим. Поэтому вам нужно бросить его:Panel panel = tabControl.TabPages[0].Controls["Panel"] as Panel; if (panel != null) { // got a panel here so do something }
Также: MSDN имеет некоторые хорошие ресурсы - вы должны использовать его.