2012-01-09 4 views
0

Windows Forms 콤보 박스를 상속하는 클래스가 있습니다. 클래스는 항목이 추가되었지만 추가 이벤트가 발생하면 추가 작업을 수행해야합니다. 따라서 추가 작업을 수행하는 항목을 추가하고 지우는 방법을 추가했습니다. 개발자가 항목에 직접 액세스하여 추가하는 것을 피하기 위해 Items 속성을 오버로드하여 예외를 throw했습니다.VS 디자이너에서 다른 코드 실행

이 모두 VS 디자이너를 제외하고 잘 동작합니다. 디자이너가 Items 속성에 액세스하려고 시도하고 예외를 가져오고 오류를 표시합니다.

VS 디자이너가 코드를 컴파일 할 때 정의 된 상수가 있습니까? 이것은 작업에 가장 적합한 것처럼 보입니다.

+1

'Items' 속성이 * 과부하되었다고 말하는가 * 그림자가 있습니까? –

+0

이것은 vb.net이므로 _shadow_가 _overload_ –

+1

입니다. 아니, 그들은 똑같은 것이 아닙니다. 오버로딩은 같은 이름을 가진 새로운 멤버를 제공하지만 * 다른 시그니처 * (대개 메소드의 경우)를 제공합니다. 음영 처리는 새 멤버에게 기존 멤버와 동일한 * 서명을 제공하지만 이전 멤버를 재정의하지 않습니다. –

답변

1

Control.DesignMode 속성을 찾으십니까? 솔직하게 말하자면, 디자인의 관점에서 보았을 때 ComboBox 서브 클래 싱을 사용할 수없는 ComboBox 서브 우퍼를 사용하면 ... 이 숨겨진 경우 (또는 음영 처리 된 경우) Items 속성을 다른 사람과 연결하면 누구도 으로, ComboBox을 입력하면 원래 Items 속성에 액세스 할 수 있습니다. 당신이 무엇을 하려는지 정확히 알고 있지 않다. 정말로 여기에서하려고 노력한다.

+1

내가하려는 것은 항목이 추가 될 때 추가 작업을 수행 할 수있는 콤보 박스를 사용하는 것입니다. 그런 사건이 있었다면, 나는 이것에 대한 필요가 없었을 것입니다. 예, 콤보 박스로 언급 한 사람은 누구나이를 회피 할 수 있습니다. 그러나 의도적으로 장난을하지 않는 한 누구도 콤보 박스로 언급 할 이유가 없습니다. 폼의 멤버는 상속 클래스의 인스턴스입니다. 이것이 이상적인 것은 아니라는 것을 알고 있습니다.하지만 개발자가 Items 속성을 사용할 수 없다는 사실을 잊지 않고 대부분의 경우 작동하는 무언가를 찾으려고합니다. –

관련 문제