2012-02-19 85 views
5

我有几个TabPages,每个包含丰富的文本框。我如何在选定的选项卡上访问richtechbox?如何从C#中的TabPage获取控件?

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; 
+0

邮政所添加的控制选项卡中的代码。 – 2012-02-19 17:41:27

+0

变量名称无关紧要。您忘记设置Name属性。 – 2012-02-19 18:09:25

回答

9

如果是这样的WinForms,这纯粹是:

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

如果RTB是名的RichTextBox控件。

在创建控件,名称添加到它:

RichTextBox rtb = new RichTextBox(); 
rtb.Name = "rtb"; 
3

你的做法是不工作的原因是因为您正在尝试使用该控件的名称属性来找到它。

看着你的代码,你没有设置Name属性。如果您可以提前生成已知名称,则可以在查找控件时使用该名称。

你也可以试试这个:

var rtb = tabControl.SelectedTab.Controls.Cast<Control>() 
           .FirstOrDefault(x => x is RichTextBox);