Como implementar um provedor de extensor

Provedores de extensor podem adicionar propriedades para controles. Controles de ActiveX também usava o conceito de provedores de extender, mas eles exigiram que o suporte de linguagem de programação especial. No.NET Framework, extensor provedores exigem que não há suporte especial. No código-fonte, uma propriedade do provedor extender existe no objeto de provedor do extensor. Definindo o valor da propriedade em outro objeto exige duas informações: o objeto para definir o valor e o novo valor da propriedade. Por exemplo, o Windows Forms tem um ToolTip o componente que oferece uma propriedade extender para outros controles. A propriedade que define sobre outros objetos é uma seqüência de caracteres que representa o ToolTip que aparece quando o ponteiro passa sobre o controle. O exemplo de código a seguir mostra como definir o ToolTip propriedade.

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

Em tempo de design, as propriedades de extensor aparecem no navegador de propriedades como propriedades nos objetos que se estendem por eles, em vez do objeto real extender. No exemplo anterior, o ToolTip propriedade aparece em button1, não no tooltip1.

Para implementar um provedor do extensor

  1. Definir um componente que implementa o IExtenderProvider interface.

    Public Class MyExtender
       Implements IExtenderProvider
       ...
    End Class
    
    public class MyExtender : IExtenderProvider {...}
    

    A definição de IExtenderProvider é o seguinte.

    Public Interface IExtenderProvider
       Function CanExtend(ByVal extendee As Object) As Boolean
    End Interface
    
    public interface IExtenderProvider {
        bool CanExtend(object extendee);
    }
    
  2. Implementar a CanExtend método, de modo que ele retorna true para cada componente ou controle que o extender fornece propriedades para.

  3. Defina um conjunto de propriedades que o extender pode fornecer a outros componentes. As propriedades são realmente métodos, pois elas terão um parâmetro extra que especifica o componente para aplicar a propriedade.

Uma classe de provedor do extensor deve ser marcada com um ProvidePropertyAttribute. O construtor da ProvidePropertyAttribute leva dois argumentos: primeiro, uma seqüência de caracteres especificando o nome da propriedade para adicionar e, segundo, o tipo do objeto para fornecer a propriedade.

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

Embora um provedor extender pode fornecer propriedades para qualquer componente, a implementação geralmente inclui recursos que tornam utilizáveis apenas com uma categoria específica de componentes.

Para obter um exemplo completo, consulte Como implementar um provedor de extensor HelpLabel.

Consulte também

Tarefas

Como implementar um provedor de extensor HelpLabel

Outros recursos

Estendendo o suporte para tempo de design