2011-08-11 10 views
1

私は入力用にいくつかのテキストボックスを持っています。 フォームのすべてのエントリをクリアするためのショートカットはありますか?すべてのテキストボックスをクリアする(任意のショートカット)

すべてのテキストボックスがフォームの直接の子である場合は、その後の.text = String.Emptyを

+1

に適用するタイプをチェックし、クリア制御。 http://stackoverflow.com/questions/4811229/how-to-clear-the-text-of-all-textboxes-in-the-form – RoccoC5

答えて

8

、すべてのフォームコントロール上のループに必要とタイプがテキストボックスであるかどうかをチェックしますaTextBox.Clear();

+1

+1、ニースのクエリ! – sll

1

例えば、すべてのテキストボックスをクリアするには、上記のクリックイベントのように、この関数を呼び出し

yourForm.Controls.OfType<TextBox>().ToList().ForEach(textBox => textBox.Clear()); 
+0

これを拡張メソッドとして実装することを検討してください。 –

+0

また、削除されたコメントに記載されているように、フォーム上のすべてのコンテナコントロールもチェックする必要があります。 –

+0

はい、これはネストされたループにつながるので、@フレデリックの答えは良いですhttp://stackoverflow.com/questions/7034161/clear-all-textboxes-any-shortcut/7034178#7034178 –

1
var cntrlCollections = GetAll(this,typeof(TextBox)); 

     foreach (Control ctrl in cntrlCollections) 
     { 

      if (ctrl is TextBox) 
      { 
       ctrl.Text = " "; 
      } 
     }  

public IEnumerable<Control> GetAll(Control control, Type type) 
    { 
     var controls = control.Controls.Cast<Control>(); 

     return controls.SelectMany(ctrl=>GetAll(ctrl,type)).Concat(controls).Where 
       (c=>c.GetType() ==type); 
    } 

:あなたは、LINQを使用することができます。これがあなたに役立つことを願っています。

1

Fredericのコメント - ActiveForm yourform.ActiveForm.Controls. ...を使用する必要があります。

エラーをドロップyourform.Controls. ... Beacuse:

An object reference is required for the non-static field, method, or property 'System.Windows.Forms.Control.Controls.get

は、これを実現するために私が知っ唯一の方法は、再帰的にコントロールツリーを反復処理することであるVS2012Express

関連する問題