![](/img/trans.png)
[英]c# How to get index of panel control placed in tabcontrol's current tabpage
[英]How to get control(s) from TabPage in C#?
我有几个 TabPages,每个都包含富文本框。 如何在选定的选项卡上访问richtechbox?
TabPage selectedTab = tabControl.SelectedTab;
RichTextBox selectedRtb = selectedTab.Controls.Find("rtb", true).First() as 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;
如果这是 WinForms,那就是:
if (selectedTab.Controls.ContainsKey("rtb"))
RichTextBox selectedRtb = (RichTextBox)selectedTab.Controls["rtb"];
如果 rtb 是 RichTextBox 控件的名称。
创建控件时,为其添加名称:
RichTextBox rtb = new RichTextBox();
rtb.Name = "rtb";
您的方法不起作用的原因是您试图通过使用控件的 name 属性来查找它。
查看您的代码,您没有设置Name
属性。 如果您可以提前生成已知名称,则可以在查找控件时使用它。
你也可以试试这个:
var rtb = tabControl.SelectedTab.Controls.Cast<Control>()
.FirstOrDefault(x => x is RichTextBox);
Philip Fourie 的回答非常好,让我意识到您实际上可以让 Design 生成或不生成控件的名称。
不知何故,我将 GenerateMember 设置为 false,一旦将其重新打开,我就可以通过它的名称直接访问控件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.