질문이 있습니다. 기본 컨트롤 (사용자 정의 컨트롤 용)의 요소 및 범주 중 일부를 숨길 수 있습니까? 내가 정의한 속성 만 표시되도록합니다. 시간 내 줘서 고마워.사용자 지정 컨트롤의 요소 및 범주 숨기기
답변
속성을 음영 처리하고 [Browsable(false)]
을 추가하십시오. 예를 들어
:
[Browsable(false)]
public new SomeType SomeProperty {
get { return base.SomeProperty; }
set { base.SomeProperty = value; }
}
고마워, 슬랙스. 그랬어. 나는 intellisense에서 속성을 알맞게 숨길 수는 없다는 것이 수치 다. 도구 -> 옵션 -> 텍스트 편집기 -> C# -> IntelliSense -> 고급 멤버 숨기기에 대해 알아 냈습니다. 비록 그것은 제어 사용자가 그것을해야하기 때문에 내 의견으로는 실용적이지 않다. –
당신은 윈폼 속성 편집기에 표시 속성을 방지하기 위해 [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
의 즉, 기본 유형으로 캐스팅하여 "원래"속성에 액세스 할 수 있으며, 그것은 여전히 작동합니다. 이것에 관해서 당신이 할 수있는 일은 아무것도 없습니다 (다른 기본 클래스에서 파생되지는 않습니다).
당신은 WinForms를 사용하고 있습니까? – SLaks