2012-05-28 2 views
0

내 WinForm에서 모든 버튼을 삭제하려고합니다. 그러나 어쨌든, 양식에 몇 개의 버튼이 있습니다. 폼의 모든 버튼을 제거하는 방법은 무엇입니까? 내 코드에서 실수는 무엇입니까?버튼에서 화면 지우기

void ClearScreen() 
    { 
     foreach (Control c in this.Controls) 
     { 
      if (c is Button) 
       this.Controls.Remove(c); 

     } 


    } 
+0

에서 모든 버튼을 제거하는 일반적인 방법은? 더 많은 정보를 제공 할 수 있습니까? 바인딩 및 해당 변환기를 사용하여 숨기거나 접을 수 있습니까? Btw는 현재 컨트롤의 자식을 순환하기 때문에 재귀 메서드를 작성하고 모든 자식에게 호출해야합니다. – trimeyko

+0

무엇을? 나는이 형태로 서열을 보여주고있다. 사용자가 원할 때 다른 순서를 보여주고 싶습니다. 그래서 나는 내 양식의 단추를 제거하고 새 단추를 활성화해야합니다. – Noam650

+0

나는 당신의 코드를 시험해 보았다. 당신이 얻는 오류는 무엇입니까? – Schaliasos

답변

3

코드가 작동하지 않는 이유는 열거자를 사용하여 루프를 반복하면서 컬렉션을 수정하기 때문입니다.

+0

죄송합니다, WinForm을 사용합니다. – Noam650

+0

+1. to 루프를 사용하지 않고 삭제할 수 있습니까? – Schaliasos

+0

단일 패널에 넣고 패널을 제거하지 않는 한 해당되지 않습니다. –

2

이 시도 :

void ClearScreen() 
{ 
    List<Button> _buttons = this.Controls.OfType<Button>().ToList(); 

    foreach (var button in _buttons) 
    { 
     this.Controls.Remove(button); 
    } 
} 
+1

그것이 작동합니다! 고맙습니다!!! – Noam650

+0

당신을 환영합니다. – Schaliasos

0
foreach (Button btn in this.Controls.OfType<Button>()) 
      { 
       this.Controls.Remove(bbb); 
      } 

이 양식 당신이 그들을 제거해야하는 이유