방법: Extender 공급자 구현

Extender 공급자를 사용하면 속성을 컨트롤에 추가할 수 있습니다. ActiveX 컨트롤에서도 extender 공급자 개념을 사용했지만, 여기에서는 특정 프로그래밍 언어가 지원되어야 했습니다. .NET Framework에서는 extender 공급자에 특별한 지원이 필요하지 않습니다. 소스 코드에서 extender 공급자 속성은 해당 extender 공급자 개체에 있습니다. 다른 개체에 속성 값을 설정하려면, 두 가지 정보, 즉 값을 설정할 개체와 속성의 새 값이 필요합니다. 예를 들어 Windows Forms에는 다른 컨트롤에 extender 속성을 제공하는 ToolTip 구성 요소가 있습니다. 이 구성 요소가 다른 개체에 설정하는 속성은 마우스 포인터로 컨트롤을 가리킬 때 표시되는 도구 설명을 나타내는 문자열입니다. 다음 코드 예제에서는 ToolTip 속성을 설정하는 방법을 보여 줍니다.

tooltip1.SetToolTip(button1, "The tooltip text")
tooltip1.SetToolTip(button1, "The tooltip text");

디자인 타임에 extender 속성은 실제 extender 개체 대신 extender 속성이 확장한 개체의 속성으로 속성 브라우저에 표시됩니다. 위의 예제에서 ToolTip 속성은 tooltip1이 아니라 button1에 나타납니다.

extender 공급자를 구현하려면

  1. IExtenderProvider 인터페이스를 구현하는 구성 요소를 정의합니다.

    Public Class MyExtender
       Implements IExtenderProvider
       ...
    End Class
    
    public class MyExtender : IExtenderProvider {...}
    

    IExtenderProvider의 정의는 다음과 같습니다.

    Public Interface IExtenderProvider
       Function CanExtend(ByVal extendee As Object) As Boolean
    End Interface
    
    public interface IExtenderProvider {
        bool CanExtend(object extendee);
    }
    
  2. extender가 속성을 제공하는 각 구성 요소 또는 컨트롤에 대해 true를 반환하도록 CanExtend 메서드를 구현합니다.

  3. 사용자의 extender가 다른 구성 요소에 제공할 수 있는 속성 집합을 정의합니다. 속성은 속성이 적용될 구성 요소를 지정하는 추가 매개 변수를 사용하기 때문에, 실제로 메서드입니다.

extender 공급자 클래스는 ProvidePropertyAttribute로 표시되어야 합니다. ProvidePropertyAttribute의 생성자는 인수를 두 개 사용하는데 하나는 추가할 속성 이름을 지정하는 문자열이고 다른 하나는 속성을 제공하는 개체의 형식입니다.

<ProvideProperty("HelpText", GetType(IComponent))> _
Public Class MyExtender
   Implements IExtenderProvider 
   ...
End Class
[ProvideProperty("HelpText", typeof(IComponent))]
   class MyExtender : IExtenderProvider {...}

extender 공급자에서는 임의의 구성 요소에 대한 속성을 제공할 수 있지만, 일반적으로 구현에는 특정 범주의 구성 요소에서만 사용할 수 있는 기능이 포함됩니다.

전체 샘플은 방법: HelpLabel Extender 공급자 구현을 참조하십시오.

참고 항목

작업

방법: HelpLabel Extender 공급자 구현

기타 리소스

디자인 타임 지원 확장