擴充性提供者概觀

「擴充性提供者」(Extender Provider) 是可提供屬性給其他元件的元件。 例如,在表單上加入 ToolTip 元件時,它就會將名為 ToolTip 的屬性提供給該表單上的每一個控制項。 ToolTip 屬性就會隨後顯示在任何附加的 PropertyGrid 控制項中。 您可以在設計階段,為這個屬性設定值。

擴充性提供者所提供的屬性 (Property) 實際位於擴充性提供者物件本身,因此並不是所修改元件的真正屬性 (Property)。 在設計階段,這個屬性會顯示在附加於正進行修改之元件的任何 PropertyGrid 中。 但您無法在執行階段,透過元件本身存取這個屬性。 而必須呼叫 ToolTip 元件上的 GetToolTip 方法。

實作

下列清單說明實作擴充性提供者的必要步驟:

  • 使用 ProvidePropertyAttribute 屬性 (Attribute),指定由您的擴充性提供者所提供的屬性 (Property)

  • 實作所提供的屬性

  • 追蹤接收您所提供屬性的控制項

  • 實作 IExtenderProvider 介面

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

ProvideProperty 屬性

擴充性提供者是一種類別,因此本身也可以有屬性和方法。 若要將屬性 (Property) 指定為要提供給其他元件的屬性 (Property),可在類別層級套用 ProvidePropertyAttribute 屬性 (Attribute)。 這個屬性 (Attribute) 會指定所要提供之屬性的名稱以及提供該屬性的物件型別。

實作所提供的屬性

依照慣例,所提供的屬性並不是實作為屬性,而是實作為一組方法。 您必須將這些方法命名為 GetPropertyName 及 SetPropertyName。 例如,如果您的擴充性提供者實作提供名為 DemoText 的屬性,就要將方法命名為 GetDemoText 和 SetDemoText。

這些方法會採用單一的 Component 參數,讓您追蹤指定給各元件的屬性值。

追蹤接收所提供屬性的控制項

所提供屬性的實作需要 IDictionary 或一些其他集合物件 (Collection Object),以記錄及擷取各個元件的屬性值。

例如,您可以使用元件執行個體做為 DictionaryEntryKey,並使用屬性值做為 DictionaryEntryValue。 呼叫 GetPropertyName 方法時,您的實作會查詢對應於特定元件的屬性值集合。

實作 IExtenderProvider 介面

每個擴充項 (Extender) 類別都必須實作 IExtenderProvider 介面。 這個介面是由單一方法 CanExtend 組成,它會傳回 Boolean 值,並指示設計工具是否要擴充元件。

雖然擴充性提供者可以提供屬性給任何元件,這實作基本上包括一些功能,故只能使用於特定分類的元件。 例如,您可能需要建立只將屬性 (Property) 提供給控制項的擴充項。 CanExtend 方法的實作可以強制執行此條件約束。

請參閱

工作

HOW TO:實作擴充性提供者

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

其他資源

擴充設計階段支援