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 に答える