2011-02-14 4 views
6

런타임에 최대 20 개의 버튼을 생성했습니다.C# .net을 사용하여 배열의 단추를 제거하는 방법?

이벤트가 발생하면 처음에는 5 개의 버튼을 그대로두고 15 개의 버튼을 제거하고 싶습니다. 그렇게하려면 어떻게해야합니까?

다른 이벤트가 호출 될 때마다 같은 버튼이 이전과 같이 추가됩니다.

답변

5

배열 대신 목록을 사용해야합니다. 이 같은 것을 할 때 작성하는 것 같아요 :

다음
List<button> buttons = new List<button>(); 
for(int i = 0; i < 20; i++){ 
    Button b = new Button(); 
    ... 
    this.Controls.Add(button); 
    buttons.Add(button); 
} 

다시 응용 프로그램에서 모든 버튼을 제거하기를, 단순히 수행이와

this.Controls.Remove(buttons[i]); 
buttons.RemoveAt(i); 

는 지난 15 개 버튼을 제거, 설정, 시도 다음

for(int i = 19; i > 4; i--){ 
    this.Controls.Remove(buttons[i]); 
    buttons.RemoveAt(i); 

것은 더 높은 인덱스 모든 요소가 일을 얻을 것을 의미합니다 목록 내부 요소를 삭제하면 때문에, 20 항목의 루프 시작하자, 아래쪽으로 일을 기억 eir index 을 1로 변경했습니다.

0

단추를 제거하려면 컨트롤 모음에서 제거해야합니다.

사용 this.Contols.Remove(<buttonControl>);

이 런타임에 버튼을 추가하는 방법과 비슷합니다. .add 대신 .remove을 사용합니다.

관련 문제