如何使用半动态创建的控件名称

本文关键字:控件 创建 何使用 动态 | 更新日期: 2023-09-27 18:32:28

>我正在 TabControl 上创建一个新选项卡,该选项卡内部包含一个 RichTextBox,该选项卡通过设置名称 Variable 进行半动态命名,如下所示:

chatWindow.Name = name + "ChatArea";

"名称"是用户已加入的聊天频道的名称。

例如:名称 = 测试,RTB 名称将是:测试聊天区域。

有没有一种简单的方法可以通过代码访问该控件,或者我这样做的方式完全错误?

如何使用半动态创建的控件名称

若要以编程方式检索包含 RichTextBox 控件的 TabPage,您应该搜索 TabControl 中的所有 tabPage,并检查该页中的任何 RichTextBox 是否具有您要搜索的名称

foreach(TabPage tp in yourTablControl.TabPages)
{
     RichTextBox rtb = tp.Controls.OfType<RichTextBox().FirstOrDefault(x => x.Name ==  name + "ChatArea");
     if(rtb != null)
     {
         // rtb is your control, do your stuff in a sub
         // passing the found control and break the loop
         DoYouStuffWithRichTextBox(rtb)
         break;
     }
}

当然,您需要有一种方法来识别此代码的变量部分。这意味着在进入此循环之前,应使用您要搜索的实际值设置变量名称

如果我们可以假设每个 TabPage 只有一个 RichTextBox,则此代码会更简单。在这种情况下,在动态地创建 TabPage 及其 RichTextBox 时,可以将 TabPage 的 Name 属性设置为聊天区域,并将其用作标识控件的一种方式。

TabPage tp = yourTablControl.TabPages["chatAreaName"];
RichTextBox rtb = tp.Controls.OfType<RichTextBox().FirstOrDefault();
if(rtb != null)
{
   ....