2011-08-11 4 views
1

입력 용으로 여러 개의 텍스트 상자가 있고 그 다음에 결과를 위해 여러 개의 텍스트 상자가 있습니다. 양식의 모든 항목을 지우는 지름길이 있습니까? 예를 aTextBox.Clear();모든 텍스트 상자 지우기 (모든 바로 가기)

+1

에 난이 반복적으로 컨트롤 트리를 반복하는 것입니다 달성의 알고있는 유일한 방법을 적용

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

:

Beacuse yourform.Controls. ... 오류 방울 제어. http://stackoverflow.com/questions/4811229/how-to-clear-the-text-of-all-textboxes-in-the-form – RoccoC5

답변

8

텍스트 상자에 있는지 확인합니다에 대한

, 당신은 LINQ를 사용할 수 있습니다

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

+1, 좋은 검색어! – sll

1

당신은 모든 폼 컨트롤에 루프에 필요한 모든 텍스트 상자 양식의 직계 자식 인 경우 유형은 다음는 .text = String.Empty로

+0

확장 메소드로 구현하는 것이 좋습니다. –

+0

또한 삭제 된 주석으로 언급했듯이 양식의 모든 컨테이너 컨트롤을 확인해야합니다. –

+0

예, 그러면 중첩 루프가되므로 @ Frédéric 대답이 더 좋습니다 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); 
    } 

전화 위와 같이이 기능을 클릭 이벤트의 모든 텍스트 상자를 지 웁니다. 희망이 당신을 위해 도움이 될 것입니다.

1

Frederic에 대한 의견 - ActiveForm yourform.ActiveForm.Controls. ...을 사용해야합니다. , 유형을 확인하고 명확 VS2012Express