Compartilhar via


Comandos de Designer e o modelo de objeto de DesignerAction para Windows Forms

Comandos de Designer e o modelo de objeto DesignerAction fornecem uma maneira generalizada para você especificar um conjunto de ações para um componente em tempo de design. Os usuários, em seguida, acessar essas ações da superfície de design, normalmente clicando no glifo de marcas inteligentes do componente (Glifo de marca inteligente) e selecionando uma das ações oferecidas a partir do painel de marcas inteligentes. Esse modelo unifica as várias maneiras de que um designer pode oferecer comandos para os usuários.

Marcas inteligentes

O recurso de marca inteligente permite que os componentes e controles para exibir informações contextuais e comandos para os usuários. A marca inteligente pode ser considerada como uma substituição para designer verbos, porque você pode optar por exibir um item de marca inteligente no painel de marcas inteligentes e também no menu de atalho associado a um componente ou controle.

Para obter um exemplo completo de como você pode implementar as marcas inteligentes, consulte Como: Anexar marcas inteligentes para um componente do Windows Forms.

Classes de comando de Designer

A tabela a seguir descreve as maneiras de designer comandos estão expostos a você quando você estiver desenvolvendo componentes e controles.

Classe

Descrição

MenuCommand

Um representante anexado a uma ID de comando. Ele não define o texto de comando, sua colocação ou outros metadados.

DesignerVerb

Um comando de menu também define seu texto e outros metadados. Verbos geralmente são oferecidos em uma base por designer e são específicos para o designer. Verbos do Designer geralmente são mostrados em um menu de atalho ou do Exibir menu da barra de menu principal.

DesignerActionItem

Um comando de menu que define o texto e outros metadados para descrever uma ação de destino pode ser executada. Ações normalmente orientam o usuário por meio de algum processo em várias etapas, como, por exemplo, configurar uma fonte de dados para um componente.

Envio e recebimento de modelos

A tabela a seguir mostra os dois modelos para programaticamente acessar comandos designer.

Modelo

Descrição

Envio

Especificamente, um designer solicita um serviço e adiciona comandos ao serviço.

Recepção

Um designer é consultado por um serviço para comandos que ele oferece.

Unificar os comandos existentes

Há muito em comum entre os tipos de comandos listados na tabela anterior das classes de designer de comando. A API DesignerAction traz esses juntos para apresentar um modelo uniforme para expor comandos para os usuários de um designer.

ObservaçãoObservação

Nem todos os designers suportam todos os modelos. Um designer pode consultar os tipos de suporte são oferecidos e resposta podem ser alterados como ele oferece comandos. Além disso, os modelos de envio e de recepção podem não ser suportados para todos os tipos de comandos. Nem todos os designers irá expor designer ações como marcas inteligentes. Por exemplo, alguns designers podem expor designer ações em uma janela de ferramenta.

Modelo de objeto de DesignerAction

A tabela a seguir descreve as classes importantes que implementam o modelo de objeto DesignerAction.

Classe

Descrição

DesignerActionItem

Representa um item do painel em um painel de marcas inteligentes.

DesignerActionList

Define uma lista de itens usados para criar um painel de marcas inteligentes.

DesignerActionService

Estabelece um serviço de tempo de design que gerencia a coleção de DesignerActionItem objetos para componentes.

DesignerActionTextItem

Representa um item de texto estático em um painel. Deriva de DesignerActionItem.

DesignerActionPropertyItem

Representa um item do painel que está associado uma propriedade em uma classe derivada de DesignerActionList. Deriva de DesignerActionItem.

DesignerActionMethodItem

Representa um item do painel que está associado um método em uma classe derivada de DesignerActionList. Deriva de DesignerActionItem.

DesignerActionHeaderItem

Representa um item de cabeçalho estático em um painel de marcas inteligentes. Deriva de DesignerActionTextItem.

Usando o modelo de objeto de DesignerAction

Para habilitar as ações de designer para seu componente ou controle, derivam de DesignerActionList classe de base. Use esta classe derivada para preencher um painel de marcas inteligentes, que representa a interface do usuário do menu semelhante.

Sua classe derivada pode substituir o virtual GetSortedActionItems método para retornar uma coleção de objetos derivados de DesignerActionItem. Esses objetos representam os itens do painel. Cada item é exibido no painel de acordo com a seu tipo. Por exemplo, um DesignerActionTextItem é exibido como um rótulo de texto estático. Os itens do painel ativo, representados pela DesignerActionPropertyItem e DesignerActionMethodItem tipos, têm uma propriedade correspondente de acessível publicamente ou método, respectivamente, que implementa a funcionalidade para o item.

Depois que sua classe derivada é criado, você pode adicioná-lo a um controle de duas maneiras:

  • Com o modelo de recepção, você adiciona uma instância de sua classe derivada para o ActionLists propriedade no ComponentDesigner classe. Isso fornece uma maneira de herança de classes para fornecer outras listas de ação e seus itens a serem mesclados.

  • Com o modelo de envio, você chamar Add para adicionar uma instância da classe derivada à coleção mantida pelo global DesignerActionService. Essas listas de ação serão mescladas com aqueles na coleção mantida pelo ComponentDesigner.

A DesignerActionPropertyItem é representado no designer por seu correspondente UITypeEditor. A DesignerActionMethodItem é representado no designer por um elemento de interface do usuário ativo, como um hiperlink, que chama um método fornecido pelo programador. Implementação da sua lista de ação de GetSortedActionItems método retorna as propriedades e métodos na ordem em que elas devem ser exibidas no painel de marcas inteligentes.

Para obter um exemplo completo de implementar as marcas inteligentes, consulte o tópico Como: Anexar marcas inteligentes para um componente do Windows Forms.

Verbos existentes nas listas de ação

Controles e componentes com existentes DesignerVerb implementações recebem automaticamente DesignerActionList suporte. O ambiente de design consultará o designer de um componente para obter uma lista de ação e se nenhum estiver disponível, um é criado para verbos existentes.

Itens de lista de ação no Menu de atalho

Se você deseja um item aparecem no menu de atalho e uma lista de ação, você pode especificar o IncludeAsDesignerVerb sinalizador em DesignerActionMethodItem.

Quando Add é chamado, a ação de lista é examinada para qualquer DesignerActionMethodItem com o IncludeAsDesignerVerb sinalizador definido. Se for definido, o AddVerb método será chamado para o item Adicionar que para os verbos do componente e, portanto, o menu de atalho.

Alterações em tipos de comando do Designer

O MenuCommand e DesignerVerb classes da.NET Framework versão 1.1 foi ligeiramente alterada para suportar o modelo de objeto DesignerAction. Ambos os tipos agora expõem uma nova propriedade chamada Properties, que é um IDictionary que armazena todas as propriedades públicas para o objeto de comando. A chave de dicionário é o nome da propriedade pública. Isso permite enumeração genérica de propriedades e fornece uma base consistente do qual novas propriedades podem ser adicionadas sem modificar a definição de classe.

Além disso, o MenuCommandService classe fornece uma implementação padrão da IMenuCommandService e realiza a integração do verbo correto. Essa classe gera eventos notificando de adições e remoções de comandos. Com essa classe, você pode criar uma interface de usuário com base nos resultados desses eventos. MenuCommandService, bem como IMenuCommandService, estão disponíveis no contêiner de serviço.

Consulte também

Tarefas

Como: Anexar marcas inteligentes para um componente do Windows Forms

Referência

DesignerActionList

ComponentDesigner

DesignerVerb

MenuCommand

MenuCommandService

Outros recursos

Estendendo suporte em tempo de design