2013-05-17 2 views
0

기본적으로 내가하는 일은 : 버튼 클릭을 통해 텍스트 상자를 추가 (n)합니다. 나는 다시 (N) 텍스트 상자를 추가보다Controls 컬렉션에서 TextBox를 제거하면 아무 효과가 없습니다

foreach (Control c in this.Controls) 
{ 
    TextBox tb = c as TextBox; 
    if (tb != null) 
    { 
     this.Controls.Remove(tb); 
     tb.Dispose(); 
    } 
} 

을하지만, 기존의 텍스트 상자에서 모든 두 번째 항목은 남아있다 : ​​나는 다시 클릭하면이 코드가 실행됩니다. 어떤 아이디어?

답변

1

반복하는 컬렉션에서 항목을 제거하는 것은 나쁜 생각입니다. 사용해보기 :

List<Control> toBeRemoved = new List<Control>(); 
foreach (Control c in this.Controls) 
{ 
    if (c instanceof TextBox) 
    { 
     toBeRemoved.Add(c); 
    } 
} 
foreach (Control c in toBeRemoved) 
{ 
    this.Controls.Remove(c); 
    c.Dispose(); 
} 
관련 문제