1

我正在尝试动态创建对象,然后稍后从它们中调用。例如...

for(int i=0;i<10;i++)
{
    tabControl.TabPages.Add(i, i.ToString());
    richTextBox rtb = new richTextBox();
    rtb.Parent = tabControl.TabPages[i];
    rtb.dock = fill;
}

然后在我的编码中..

private void onButtonClick_example()
{
    var rtb = tabControl.SelectTab.GetChildrenByPoint(new point(1,1));
    rtb.WordWrap = true;
}

如何再次将该孩子作为“富文本框”返回?

4

2 回答 2

1

如果 GetChildrenByPoint 返回 RichTextBox 以外的内容,则需要使用as并检查 null,以免遇到其他控件时崩溃。

foreach(var item in tabControl.SelectTab.GetChildrenByPoint(new point(1,1)))
{
  RichTextBox rtb= item as RichTextBox;
  if(rtb != null) //if we found a RichTextBox
  {
     rtb.WordWrap = true;
  }
}
于 2012-12-20T02:55:31.210 回答
0
  1. 创建富文本框控件时,将动态 ID 添加到它。
  2. 循环浏览所选选项卡中的控件:

    
    foreach(var control in tabControl.SelectTab.Controls)
    {
        if(control.ID == "NEWCONTROLID")
        {
          RichTextBox rtb = (RichTextBox) control;
        }
    }
    

这样做是出于我的考虑,因此可能存在代码问题,但希望它能让您走上正轨。基本上,您需要在选定选项卡的控件集合中搜索您创建的控件,然后将其转换为 RichTextBox。

您还可以使用 Control.Find() 方法找到您的控件,然后进行转换。

于 2012-12-20T03:48:41.130 回答