2011-01-18 3 views

답변

1

속성을 음영 처리하고 [Browsable(false)]을 추가하십시오. 예를 들어

:

[Browsable(false)] 
public new SomeType SomeProperty { 
    get { return base.SomeProperty; } 
    set { base.SomeProperty = value; } 
} 
+0

고마워, 슬랙스. 그랬어. 나는 intellisense에서 속성을 알맞게 숨길 수는 없다는 것이 수치 다. 도구 -> 옵션 -> 텍스트 편집기 -> C# -> IntelliSense -> 고급 멤버 숨기기에 대해 알아 냈습니다. 비록 그것은 제어 사용자가 그것을해야하기 때문에 내 의견으로는 실용적이지 않다. –

0

당신은 윈폼 속성 편집기에 표시 속성을 방지하기 위해 [Browsable(false)] 사용자 정의 속성을 사용할 수 있습니다 :

[Browsable(false)] 
public new PropertyType PropertyName 
{ 
    get { return base.PropertyName; } 
    set { base.PropertyName = value; } 
} 

그러나이 여전히 작동 속성을 만들 것입니다, 양식 디자이너에게는 표시되지 않습니다. 컴파일러는 그것을 기꺼이 받아 들일 것입니다. 컴파일러는 여전히 행복하게 그것을 받아 들일 것이다, 물론

[Browsable(false)] 
public new PropertyType PropertyName 
{ 
    get { throw new InvalidOperationException("This property cannot be used with this control."); } 
    set { throw new InvalidOperationException("This property cannot be used with this control."); } 
} 

하지만, 런타임에 발생합니다 : 당신이 실제로 작동이 중지 속성을 원하는 경우 예외를 throw합니다. 그러나, 그래서, 클라이언트 프로그래머는 여전히 그들이

((BaseControlType) myControl).PropertyName 

을 작성할 수 있습니다 대신

myControl.PropertyName 

의 즉, 기본 유형으로 캐스팅하여 "원래"속성에 액세스 할 수 있으며, 그것은 여전히 ​​작동합니다. 이것에 관해서 당신이 할 수있는 일은 아무것도 없습니다 (다른 기본 클래스에서 파생되지는 않습니다).

+0

실제로, IntelliSense에 나타날 것이다. – SLaks

+0

@ SLaks : 흥미 롭습니다. 'Browsable'도 아니고'EditorBrowsable'도 IntelliSense에서 그것을 제거하지 않습니다. 그렇다면 WinForms는 IntelliSense에서'Panel.KeyDown'을 어떻게 제거 할 수 있었습니까? – Timwi

+0

'EditorBrowsable'은 작동하지만 해결책 밖에 있습니다. – SLaks