2009-03-30 5 views
1

사람이 잘못 아무것도 볼 수 있습니까 제거 UserControl을. 이 코드 섹션을 단계별로 살펴보면 모든 것이 잘된 것처럼 보이지만 양식에는 아무런 변화가 없습니다. 컨트롤이 없어지기를 기대합니다.만들기 자체가

감사합니다,

브라이언

답변

9

앞에서 언급 한 것처럼 컨트롤 자체를 제거하면 원하는 결과를 얻지 못할 수도 있습니다. 나는 그것이 부모에서 컨트롤을 제거하고 싶어한다고 가정합니다 - 아마도 this.Parent.Controls.Remove(this);을 원할 것입니다.

플랫폼을 언급하지 않았기 때문에 코드는 WebForms 또는 WinForms과 동일합니다.

1

this.Controls은 UserControl을 내 기존 컨트롤의 모음입니다. "this"는 부모이므로 컬렉션 내에 존재하지 않습니다.

폼 개체를 찾고 myForm.Controls.Remove (this)를 수행하려고한다고 생각합니다. 그것은 당신의 범위는 컨트롤 자체 내에서이 '이'

, 당신은

this.Container.Controls.Remove(this); 

을 수행 할 것이다의 '이'컨트롤의 모음을 찾을 수 나던 때문에

4

아무런 반응이 없습니다하지만 모두가 달려있다 어떤 유형의 컨트롤과 어떤 유형의 컨테이너인지. 그러나 대부분의 경우에 위와 같은 것이 효과적 일 것입니다.

편집 : 당신이 당신의 컨트롤이 폼에 속하는 알고 있다면

, 당신은 다음을 수행하거나 알려진 컨테이너 유형과 양식을 대체 할 수 있습니다 (예 : 패널)

((Form)this.Container).Controls.Remove(this); 
4

다른 반응 올바른 컬렉션을 사용하고 있지 않다는 것을 지적하는 것이 옳습니다.

그러나 페이지에서 자체를 제거하는 컨트롤은 asp.net 컨트롤에서 "예상되는 동작"을 고려하지 않는다는 것을 지적합니다. Render 메서드를 재정의하거나 Visible 속성을 false으로 설정하면 동일한 결과가 발생하고 향후 코드를 유지 관리하는 사람을 혼동시킬 기회가 훨씬 줄어 듭니다.

+0

이것은이 위젯의 ​​제거 버튼에 부착 된 코드입니다. 공정한 장소처럼 보이지만 어느 한쪽으로 치우친 것 같습니다. –

관련 문제