HOW TO:實作擴充性提供者

擴充性提供者可以將屬性加入至控制項。 ActiveX 控制項也採用擴充性提供者的概念,但它們需要特殊的程式設計語言支援。 在 .NET Framework 中,擴充性提供者不需特殊支援。 在原始程式碼中,擴充性提供者屬性存在於擴充性提供者物件。 在另一個物件上設定屬性值時,需要二項資訊:要設定數值的物件和新的屬性值。 例如,Windows Form 具有提供擴充項屬性給其他控制項的 ToolTip 元件。 它在其他物件上設定的屬性為字串,以表示指標停留於控制項時出現的 [工具提示]。 下列程式碼範例會示範如何設定 ToolTip 屬性。

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

在設計階段,擴充項屬性在屬性瀏覽器中顯示為它們所擴充物件 (而非實際的擴充項物件) 的屬性。 前面的範例中,ToolTip 屬性是出現在 button1,而不在 tooltip1。

若要實作擴充性提供者

  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. 實作 CanExtend 方法,以便傳回 true 給您的擴充項將提供屬性的每個元件或控制項。

  3. 定義屬性集合,您的擴充項可將它提供給其他元件。 屬性其實是方法,因為它們接受額外參數,以指定將套用屬性的元件。

擴充性提供者類別必須以 ProvidePropertyAttribute 來標記。 ProvidePropertyAttribute 的建構函式使用二個引數:一是指定要加入的屬性名稱的字串,二是要將屬性提供至的物件所屬型別。

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

雖然擴充性提供者可以提供屬性給任何元件,這實作基本上包括一些功能,因此只能用於特定類別的元件。

如需完整的範例,請參閱 HOW TO:實作 HelpLabel 擴充性提供者

請參閱

工作

HOW TO:實作 HelpLabel 擴充性提供者

其他資源

擴充設計階段支援