Comandos de designer e o modelo de objeto 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, geralmente clicando no glifo de marcas inteligentes de um componente (Glifo de marca inteligente) e selecionando uma das ações oferecidas no 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 marcas inteligentes permite que 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 escolher 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 a 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 que pode ser executada. Ações normalmente orientam o usuário através 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.

Dica

Nem todos os designers suportam todos os modelos.Um designer pode consultar os tipos de suporte são oferecidos e, em resposta podem ser alterados como ele oferece comandos.Além disso, os modelos de envio e recebimento 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 DesignerAction

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

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 DesignerAction

Para habilitar as ações de designer para seu componente ou controle, derivam de DesignerActionList classe 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 virtualGetSortedActionItems 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. 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 aquele item.

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

  • Com o modelo de recepção, você pode adicionar 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 de sua 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 ao correspondente UITypeEditor. A DesignerActionMethodItem é representado no designer por um elemento de interface do usuário ativo, como, por exemplo, um hiperlink, que chama um método fornecido pelo programador. A implementação da sua lista de ação da GetSortedActionItems método retorna as propriedades e métodos na ordem em que eles devem ser exibidos no painel de marcas inteligentes.

Para obter um exemplo completo de implementar as marcas inteligentes, consulte o tópico Como anexar marcas inteligentes a 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 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 sinalizar em DesignerActionMethodItem.

Quando Add é chamado, a ação lista será examinada para qualquer DesignerActionMethodItem com o IncludeAsDesignerVerb o sinalizador será definido. Se ele estiver definido, o AddVerb método será chamado para aquele item para adicioná-la à 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 foram ligeiramente alteradas para dar suporte ao 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 do objeto de comando. A chave do 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 aos comandos. Com essa classe, você pode criar uma interface do 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 a um componente do Windows Forms

Referência

DesignerActionList

ComponentDesigner

DesignerVerb

MenuCommand

MenuCommandService

Outros recursos

Estendendo o suporte para tempo de design