2012-02-19 84 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);