扩展程序提供程序概述

“扩展程序提供程序”是一种为其他组件提供属性的组件。 例如,将一个 ToolTip 组件添加到一个窗体后,该组件将向该窗体上的每个控件提供名为 ToolTip 的属性。 ToolTip 属性然后会出现在任何附加的 PropertyGrid 控件中。 在设计时,您可以设置此属性的值。

扩展程序提供程序提供的属性实际驻留在扩展程序提供程序对象本身,因此并不是它修改的组件的真正属性。 在设计时,该属性将出现在任何附加到正在修改的组件的 PropertyGrid 中。 不过,在运行时,您无法通过组件自身来访问属性。 您需要对 ToolTip 组件调用 GetToolTip 方法。

实现

下表介绍了实现扩展程序提供程序所必需的步骤:

有关详细信息,请参见 如何:实现扩展程序提供程序。 有关完整示例,请参见 如何:实现 HelpLabel 扩展程序提供程序

ProvideProperty 特性

扩展程序提供程序是一个类,因此它具有自己的属性和方法。 为了将某个属性指定为要提供给其他组件的属性,应在类级别应用 ProvidePropertyAttribute 特性。 此特性指定要提供的属性名和它能将该属性提供给的对象类型。

实现提供的属性

按照约定,提供的属性不作为属性实现,而是作为一对方法来实现。 必须将这些方法命名为 GetPropertyName 和 SetPropertyName。 例如,如果您的扩展程序提供程序实现提供了一个名为 DemoText 的属性,则您应将这两个方法命名为 GetDemoText 和 SetDemoText。

这两个方法使用一个 Component 参数,该参数让您能够跟踪哪个属性值分配给了哪个组件。

跟踪接收提供的属性的控件

实现提供的属性需要 IDictionary 或一些其他集合对象来记录和检索每个组件的属性值。

例如,您可以将组件实例用作 DictionaryEntryKey,将属性值用作 DictionaryEntryValue。 调用 Get属性名称 方法时,您的实现将查询与给定组件对应的属性值的集合。

实现 IExtenderProvider 接口

每个扩展程序类都必须实现 IExtenderProvider 接口。 该接口由一个单独的方法 CanExtend 组成,此方法返回一个布尔值并向设计人员指出某个组件是不是要扩展的候选对象。

尽管扩展程序提供程序可以为任何组件提供属性,但实现包括的功能通常使其只能用于特定类别的组件。 例如,您可能希望创建一个只为控件提供属性的扩展程序。 实现 CanExtend 方法可以实施此约束。

请参见

任务

如何:实现扩展程序提供程序

如何:实现 HelpLabel 扩展程序提供程序

其他资源

扩展设计时支持