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

扩展程序提供程序可以将属性添加到控件。ActiveX 控件也使用扩展程序提供程序的概念,但它们需要特殊的编程语言支持。在 .NET Framework 中,扩展程序提供程序不需要特殊支持。在源代码中,扩展程序提供程序属性存在于扩展程序提供程序对象上。在其他对象中设置属性值需要两条信息:要设置值的对象和新的属性值。例如,Windows 窗体具有 ToolTip 组件,该组件为其他控件提供扩展程序属性。它在其他对象上设置的属性是表示 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 {...}

尽管扩展程序提供程序可以为任何组件提供属性,但实现包括的功能通常使其只能用于特定类别的组件。

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

请参见

任务

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

其他资源

扩展设计时支持