次の方法で共有


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

更新 : 2007 年 11 月

拡張プロバイダは、プロパティを他のコントロールに追加できます。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 拡張プロバイダを実装する

その他の技術情報

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