方法 : 拡張プロバイダーを実装する

拡張プロバイダーは、プロパティを他のコントロールに追加できます。 ActiveX コントロールにも拡張プロバイダーの概念が採用されていますが、ActiveX コントロールでは特別なプログラミング言語サポートが必要です。 .NET Framework では、拡張プロバイダーを使用するために特別なサポートは必要ありません。 ソース コードでは、拡張プロバイダー オブジェクトに拡張プロバイダー プロパティを指定します。 別のオブジェクトのプロパティの値を設定する場合は、値を設定する対象のオブジェクトと、プロパティの新しい値の 2 種類の情報が必要です。 たとえば Windows フォームには、他のコントロールにエクステンダー プロパティを提供する ToolTip コンポーネントがあります。 このコンポーネントが他のオブジェクトに対して設定するプロパティは、マウス ポインターがコントロール上に配置されたときに表示されるツールヒント (ToolTip) の文字列です。 ToolTip プロパティを設定する方法のコード例を次に示します。

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

このエクステンダー プロパティは、デザイン時には実際のエクステンダー オブジェクトではなく、拡張対象のオブジェクトのプロパティとしてプロパティ ブラウザーに表示されます。 上の例では、ToolTip プロパティは tooltip1 ではなく button1 に表示されます。

拡張プロバイダーを実装するには

  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. 拡張プロバイダーがプロパティを提供する対象の各コンポーネントまたはコントロールに対して true を返すように、CanExtend メソッドを実装します。

  3. 拡張プロバイダーが他のコンポーネントに提供するプロパティを定義します。 これらのプロパティは、その適用先コンポーネントを指定するパラメーターを受け取るため、実際にはメソッドです。

拡張プロバイダー クラスは、ProvidePropertyAttribute でマークされている必要があります。 ProvidePropertyAttribute のコンストラクターは、第 1 引数として追加するプロパティの名前を指定する文字列、第 2 引数としてプロパティを提供するオブジェクトの型という、2 つの引数を使用します。

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

拡張プロバイダーは任意のコンポーネントにプロパティを提供できますが、一般にその実装には、特定の種類のコンポーネントに対してだけプロバイダーを使用できるようにする機能が含まれます。

サンプル全体については、「方法 : HelpLabel 拡張プロバイダーを実装する」を参照してください。

参照

処理手順

方法 : HelpLabel 拡張プロバイダーを実装する

その他の技術情報

デザイン時サポートの拡張