方法 : 拡張プロバイダを実装する
更新 : 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 に表示されます。
拡張プロバイダを実装するには
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); }
拡張プロバイダがプロパティを提供する対象の各コンポーネントまたはコントロールに対して true を返すように、CanExtend メソッドを実装します。
拡張プロバイダが他のコンポーネントに提供するプロパティを定義します。これらのプロパティは、その適用先コンポーネントを指定するパラメータを受け取るため、実際にはメソッドです。
拡張プロバイダ クラスは、ProvidePropertyAttribute でマークされている必要があります。ProvidePropertyAttribute のコンストラクタは、第 1 引数として追加するプロパティの名前を指定する文字列、第 2 引数としてプロパティを提供するオブジェクトの型という、2 つの引数を使用します。
<ProvideProperty("HelpText", GetType(IComponent))> _
Public Class MyExtender
Implements IExtenderProvider
...
End Class
[ProvideProperty("HelpText", typeof(IComponent))]
class MyExtender : IExtenderProvider {...}
拡張プロバイダは任意のコンポーネントにプロパティを提供できますが、一般にその実装には、特定の種類のコンポーネントに対してだけプロバイダを使用できるようにする機能が含まれます。
サンプル全体については、「方法 : HelpLabel 拡張プロバイダを実装する」を参照してください。