Как получить контроль (и) из TabPage в C #? - PullRequest
5 голосов
/ 19 февраля 2012

У меня есть несколько TabPages, и каждая содержит расширенное текстовое поле. Как я могу получить доступ к richtechbox на выбранной вкладке?

TabPage selectedTab = tabControl.SelectedTab;
RichTextBox selectedRtb = selectedTab.Controls.Find("rtb", true).First() as RichTextBox;

Это то, что я пытался, но не повезло.

Добавлено:

Так вкладка добавляется с помощью элемента управления richtextbox

TabPage newTab = new TabPage(name);
RichTextBox rtb = new RichTextBox();
rtb.Dock = DockStyle.Fill;
rtb.BorderStyle = BorderStyle.None;
rtb.Text = file.Data;
newTab.Controls.Add(rtb);
tabControl.TabPages.Add(newTab);
tabControl.SelectedTab = newTab;

Ответы [ 2 ]

9 голосов
/ 19 февраля 2012

Если это WinForms, это будет просто:

if (selectedTab.Controls.ContainsKey("rtb"))
  RichTextBox selectedRtb = (RichTextBox)selectedTab.Controls["rtb"];

если rtb - это имя элемента управления RichTextBox.

При создании элемента управления добавьте к нему имя:

RichTextBox rtb = new RichTextBox();
rtb.Name = "rtb";
4 голосов
/ 19 февраля 2012

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

Глядя на свой код, вы не устанавливаете свойство Name. Если вы можете сгенерировать известное имя заранее, вы можете использовать его при поиске элемента управления.

Вы также можете попробовать это:

var rtb = tabControl.SelectedTab.Controls.Cast<Control>()
                                .FirstOrDefault(x => x is RichTextBox);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...