繁体   English   中英

如何从 C# 中的 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 设计

不知何故,我将 GenerateMember 设置为 false,一旦将其重新打开,我就可以通过它的名称直接访问控件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM