Compartilhar via


Visão geral do provedor de extensor

Um provedor do extensor é um componente que fornece propriedades para outros componentes. Por exemplo, quando um ToolTip é adicionado a um formulário, ele fornece uma propriedade chamada ToolTip a cada controle no formulário. O ToolTip , em seguida, a propriedade aparece em qualquer anexado PropertyGrid de controle. Em tempo de design, você pode definir um valor para essa propriedade.

A propriedade fornecida pelo provedor extender realmente reside no próprio objeto de provedor extender e, portanto, não é uma propriedade true do componente, que ele modifica. Em tempo de design, a propriedade aparece em qualquer PropertyGrid conectados ao componente que está sendo modificado. No entanto, em tempo de execução, é possível acessar a propriedade por meio do próprio componente. Em vez disso, chame o GetToolTip método de ToolTip componente.

Implementação

A lista a seguir descreve as etapas necessárias para implementar um provedor de extensor:

  • Use o ProvidePropertyAttribute atributo para especificar a propriedade fornecida pelo seu provedor de extensor.

  • Implemente a propriedade fornecida.

  • Controlar quais controles recebem sua propriedade fornecida.

  • Implementar a interface IExtenderProvider.

Para obter detalhes, consulte:Como: Implementar um provedor Extender. Para obter um exemplo completo, consulte Como: Implementar um provedor Extender HelpLabel.

Atributo de ProvideProperty

O provedor do extensor é uma classe, e como tal, tem suas próprias propriedades e métodos. Para designar uma propriedade como a propriedade a ser fornecido a outros componentes, você aplicar o ProvidePropertyAttribute atributo no nível da classe. Este atributo especifica o nome da propriedade para fornecer e o tipo de objeto, ele pode fornecer essa propriedade.

Implementar a propriedade fornecida

Por convenção, você não implementar a propriedade fornecida como uma propriedade, mas como um par de métodos. Você deve nomear esses métodos GetPropertyName e definirPropertyName. Por exemplo, se a sua implementação de provedor do extensor fornece uma propriedade chamada DemoText, você nomeia os métodos GetDemoText e SetDemoText.

Esses métodos adotam um único Component parâmetro, que permite controlar qual valor de propriedade é atribuído à qual componente.

Controles que recebem a propriedade fornecida de rastreamento.

A implementação da propriedade fornecida requer um IDictionary ou algum outro objeto de coleção para gravar e recuperar os valores de propriedade para cada componente.

Por exemplo, você poderia usar a instância de componente, como o Key para um DictionaryEntry e o valor da propriedade como o Value da DictionaryEntry. Quando o GetPropertyName método é chamado, sua implementação seria consultar a coleção para o valor da propriedade correspondente a determinado componente.

Implementando a Interface IExtenderProvider

Cada classe extender deve implementar a IExtenderProvider interface. Essa interface consiste em um único método, CanExtend, que retorna um valor Boolean e indica para o designer, se um componente é um candidato para ser estendido ou não.

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. Por exemplo, convém criar um extensor que fornece uma propriedade somente para controles. A implementação da CanExtend método pode impor essa restrição.

Consulte também

Tarefas

Como: Implementar um provedor Extender

Como: Implementar um provedor Extender HelpLabel

Outros recursos

Estendendo suporte em tempo de design