Como: Implementar um provedor Extender

Provedores de extensor podem adicionar propriedades para controles. Controles de ActiveX também usado o conceito de provedores de extender, mas eles exigiram que o suporte de linguagem de programação especial. No.NET Framework, os provedores de extensor não requerem nenhum suporte especial. No código fonte, uma propriedade do provedor extender existe no objeto de provedor do extensor. Definir 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 componente que oferece uma propriedade extender para outros controles. A propriedade que define em 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 Pesquisador de propriedades como propriedades em objetos que eles estendem, em vez de no objeto extensor real. No exemplo anterior, o ToolTip propriedade aparece em button1, não no tooltip1.

Para implementar um provedor extender

  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 é como segue:

    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 para que ele retorna true para cada componente ou controle que o extender fornece o loop for de propriedades

  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, especificando o nome de uma seqüência de caracteres da propriedade para adicionar e, segundo, o tipo de objeto para fornecer a propriedade.

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

Enquanto um provedor extender pode fornecer as propriedades de 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 Extender HelpLabel.

Consulte também

Tarefas

Como: Implementar um provedor Extender HelpLabel

Outros recursos

Estendendo suporte em tempo de design