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

时间:2016-01-30 07:32:19

标签: c#

我正在TabControl上创建一个新选项卡,并且该选项卡内部包含一个名为Variable的动态命名的RichTextBox,如下所示:

chatWindow.Name = name + "ChatArea";

“name”是用户加入的聊天频道的名称。

ex:name = Test,RTB名称为:TestChatArea。

是否有通过代码访问该控件的简单方法,或者我是以完全错误的方式进行此操作?

1 个答案:

答案 0 :(得分:1)

要以编程方式检索包含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;
     }
}

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

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

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