0

デザイナーを使用してコントロールを作成して追加するWinFormと、コントロールは他のすべてのコレクションと一緒にコレクションに自動的に追加されますか?

20個ほどあるとしましょう。次のTextBoxように呼び出さずに、それらをすべて同時にクリアする必要があります。

txtbox1.Clear();
txtbox2.Clear();
txtbox3.Clear();
...

デザイナーなしで各コントロールを手動で作成し、それらをコレクションに追加する必要があることはわかっていますが、今では遅すぎます。コントロールのグループ全体にアクセスできるかどうか、何か考えはありますか?

4

2 に答える 2

2

これを試して

private void ClearTextBoxes()
{
 Action<Control.ControlCollection> func = null;

 func = (controls) =>
     {
         foreach (Control control in controls)
             if (control is TextBox)
                 (control as TextBox).Clear();
             else
                 func(control.Controls);
     };

 func(Controls);
}
于 2012-12-01T17:09:57.583 に答える
0

ああ、質問を書いた直後に、実際にこれを行う方法を見つけました。foreach looponを使用できますthis.controls。次に、コントロールがTextBox.

foreach (Control x in this.Controls)
{
  if (x is TextBox)
  {
    ((TextBox)x).Text = String.Empty;
  }   
}
于 2012-12-01T17:10:14.120 に答える