2009-09-14 2 views
0

"선택한 색상"을 갖도록 TextBox를 확장하는 IExtenderProvider의 Extender 구성 요소가 있습니다. 이 색상의 기본값은 "강조 표시"입니다. 사용자는 Extender의 속성 표에서 "기본 선택 색상"을 변경할 수 있습니다. 확장 된 TextBox에 "selected color"가 정의되어 있지 않으면 지정된 "default deleted color"값을 사용합니다.속성 표에있는 컨트롤의 확장 속성에 "재설정"명령 추가

프로그래머가 TextBox의 "선택한 색상"을 변경 한 경우 Extender 구성 요소에서 정의한대로 "선택한 색상"을 "선택한 색상"으로 재설정하는 속성 격자에서 "재설정"명령을 제공하려고합니다 .

어떻게 확장 컨트롤의 속성 표 값에 "재설정"명령을 추가하고 해당 확장 속성을 확장기에서 제공하는 기본값으로 "재설정"합니까?

은 내가 확장 속성을 마우스 오른쪽 버튼으로 클릭하고 는 확장에 정의 된가 기본값으로 속성을 복원하려면 재설정을 선택 할 수 있도록합니다.

(Defining Default Values with the ShouldSerialize and Reset Methods : http://msdn.microsoft.com/en-us/library/53b8022e.aspx 참조) 분명히 이것은 작동하지 않습니다.

Public Sub ResetGetMyProperty() 
    MyProperty = "Hello World!" 
End Sub 

Extender의 속성에서 "재설정"하기 때문에 다음을 사용할 수 없습니다. 아래와 같이 프로그래머가 디폴트 값을 변경할 수 있기 때문에, 그렇지 않은 어느 일정해야하므로

Public Sub ResetMyProperty() 
    MyProperty = "Hello World!" 
End Sub 

I는 DefaultValue를 사용할 수 없다. Me.Property이 속성 그리드를 통해 프로그래머가 지정한 값 때문에

<DefaultValue("Hello World!")> _ 
Public Sub GetMyProperty(control As Control) As String 
    Return _extendees(control).MyProperty 
End Sub 

나는 <DefaultValue(Me.Property)> 뭔가를해야합니다. (내가 할 수없는 이유는 Me.Property이 상수가 아니기 때문입니다.)

[설명] 익스텐더 자체는 속성을가집니다. 이것은 모든 확장 된 컨트롤의 기본값입니다. 프로그래머가 특정 확장 된 컨트롤에 대해 "재정의"값을 지정하지 않으면 기본값이 사용됩니다. Extender의 작성자 인 "강조 표시"라고 말하면서, 내 Extender의 사용자가 "red"를 기본값으로하고 싶다면, Extender의 속성을 변경해야합니다. 이제이 확장 속성을 정의하지 않은 확장 컨트롤은 "red"를 사용합니다. 그러나 값을 지정한 컨트롤은이 "빨간색"으로 "재설정"할 수 없습니다. DefaultValue는 적용되지 않습니다. (현재 기본값을 설정하는 유일한 방법은 디자이너에서 코드를 삭제하는 것입니다.)

제안 사항이 있으십니까?

위의 코드 조각에서 Color를 사용하지 않는다는 점에 유의하십시오. 왜냐하면 내가 설명하려고하는 것을 복잡하게하기 때문입니다.

+0

나는 귀하의 질문을 정말로 이해하지 못했습니다. 좀 더 설명해 주시겠습니까? –

답변

0

확장 속성의 reset 메소드 서명은 다음과 같습니다

Public Sub ResetMyProperty(control As Control) 
    MyProperty = "Hello World!" 
End Sub 

컨트롤 매개 변수를 추가하여 ShouldSerializeValue 메서드와 비슷한 작업을 수행합니다.

+0

당신은 굉장합니다! 이것에 대한 문서가 있습니까? – AMissico

+0

이에 대한 익스텐더 공급자에 대한 특정 문서가 없습니다. 적어도 나는 아무것도 찾지 못했다. 하지만 당신은 이미 일반 부동산에 대한 재설정 지원에 대해 알고 있다고 생각합니다. Extender 공급자의 경우 VS 디자이너 지원에서 재설정 할 컨트롤을 알려주려면 기본적으로 컨트롤을 전달해야합니다. 그것이 서명을 알아내는 방법입니다. –

0

당신 이 기본값으로하려는 시스템 색상 설정의 이름을 사용하여 DefaultValue 속성을 사용할 수 있습니다 :

<DefaultValue(GetType(Color), "Highlight")> 
+0

질문에서 언급했듯이 "강조 표시"는 상수입니다. 프로그래머가 "기본 선택한 색상"으로 지정된 색상을 반영하지 않습니다. – AMissico

+0

@AMissico : "기본 선택 색상"은 무엇을 의미합니까? "강조 표시"는 시스템 색상 (사용자가 선택할 수 있음)에 의해 현재 정의 된 색상에 매핑됩니다. –

+0

예. 그러나 Extender 자체에 속성이 있습니다. 이것은 모든 확장 된 컨트롤의 기본값입니다. 프로그래머가 특정 확장 된 컨트롤에 대해 "재정의"값을 지정하지 않으면 기본값이 사용됩니다. Extender의 저자 인 "강조 표시"라고 말하면서, extender의 사용자가 "red"를 기본값으로하고 싶다면 extender의 속성을 변경해야합니다. 이제이 색상 속성을 정의하지 않은 확장 컨트롤은 "red"를 사용합니다. 그러나, 가지고있는 컨트롤은 ... "빨간색"으로 "재설정"할 수 없습니다. DefaultValue는 적용되지 않습니다. – AMissico