Visão geral do serviço de comportamento
O BehaviorService gerencia a interface do usuário em um designer. Ele fornece uma maneira uniforme para manipular elementos de interface do usuário como, por exemplo, eventos de mouse, os comandos de menu e operações de arrastar-e-soltar OLE em tempo de design.
Gerenciando a Interface do usuário em tempo de Design
Um aspecto importante de uma experiência de tempo de design personalizada de criação está gerenciando a interface do usuário. Você pode fornecer uma experiência de tempo de design para o controle personalizado criando um designer personalizado.
Como um desenvolvedor de designer, você pode criar seu próprio usuário camadas de interface, chamadas adorners. Em cada superfície camada você criar seu próprio Glyph tipos de pintura, arrastando e outras operações de interface do usuário. Cada Glyph pode ter um tipo de Behavior tipo. A Behavior é uma classe que tenha sobrecargas para todas as entradas do usuário, incluindo os comandos de menu, movimentos do mouse e operações de arrastar-e-soltar OLE. Behaviorobjetos também podem ser adicionados independentemente de um Glyph o objeto, para que eles podem conectar em geral entrada do usuário para o designer inteira. Todos os três recursos mencionados anteriormente são implementados com o Behavior tipo.
Observação |
---|
Você deve adicionar uma referência ao assembly de tempo de design, System.Design.dll. Este assembly não está incluído na.NET Framework 4 o perfil do cliente. Para adicionar uma referência a System.Design.dll, você deve alterar a estrutura do projeto de destino para .NET Framework 4. |
No .NET Framework versão 1.1, alguns eventos, como OnMouseDragBegin, eram expostas pela ControlDesigner classe. Nesse modelo, grande parte da lógica do designer de interface do usuário é implementado na EventHandler. Como existem várias áreas designadas em um controle que um usuário pode manipular, esse modelo necessário que você escrever uma grande quantidade de lógica de suporte.
O Behavior endereços do tipo de situação. O BehaviorService consiste em duas partes. A tabela a seguir mostra as partes com descrições de cada.
Parte |
Descrição |
---|---|
A pilha de Behavior classes |
Cada classe possui métodos relacionados a comandos de menu, operações de arrastar-e-soltar OLE, eventos de mouse e assim por diante. A classe na parte superior da pilha está ativo Behaviore todos os usuário entrada é roteada para que Behavior. |
Um Adorner é uma camada invisível entre a superfície de design e o usuário. Um Adorner pode conter Glyph objetos, que são objetos renderizada leve. A Glyph pode ser testado em visitas pelo serviço de comportamento e opcionalmente, ele pode expor um Behavior objeto que se torna ativo Behavior para desde que o Glyph relatórios true do seu Test de visitas. |
Enquanto o Windows Forms Designer ainda oferece suporte original ControlDesigner substituições de mouse e arrasta move essas ações são implementadas como Behavior objetos. A tabela a seguir mostra os elementos no designer para um controle simples que tem o conjunto normal de arraste as alças.
Elemento de comportamento |
Descrição |
---|---|
Adorno de seleção |
Uma camada de adorno único manipula a UI de seleção de todos os Glyph objetos. |
Glifo de corpo |
Um corpo completamente transparente Glyph fica sobre o topo do controle. Seu comportamento manipula toda a interação de mouse. |
Glifo de captura. |
Capturar Glyph objetos desenhar as alças de captura de controle. Seus Behavior controle de objetos arrastando as operações. |
Estendendo a Interface do usuário de tempo de Design
O BehaviorService modelo permite que a nova funcionalidade de facilmente em camadas em uma interface de usuário do designer existente. Nova interface do usuário permanece independente dos outros definido anteriormente Glyph e Behavior objetos. Por exemplo, as marcas inteligentes em alguns controles são acessadas por um Glyph no canto superior direito do controle ().
O código de marca inteligente cria seu próprio Adorner de camada e adiciona Glyph objetos de camada. Isso mantém a marca inteligente Glyph separados da seleção de objetos Glyph objetos. O código necessário para adicionar um novo Adorner para o Adorners coleção é simples.
behaviorService = (BehaviorService)serviceProvider.GetService(typeof(BehaviorService));
designerActionAdorner = new Adorner();
behaviorService.Adorners.Add(designerActionAdorner);
Glyph dag = new DesignerActionGlyph(/*...*/);
designerActionAdorner.Glyphs.Add(dag);
Glifos e comportamentos
O Glyph é do tipo simples. Se você precisar de funcionalidades complexas, você adicioná-lo à sua própria classe que deriva do Glyph.
Glyphobjetos podem ter Behavior objetos, mas eles não são necessários. A Glyph com não Behavior objetos possui um Behavior propriedade que retorna null.
A Behavior tem um método para cada interação do usuário com suporte. Por exemplo, a base de Behavior classe possui métodos para oferecer suporte a operações de arrastar e soltar, como OnDragEnter e OnGiveFeedback.
A maioria dos métodos retornam um valor booleano indicando se o evento foi tratado. Eventos de arrastar possuem um valor de DragEventArgs parâmetro. Itens de menu individuais podem ser adicionados ou removidos, retornando-los a partir de FindCommand método. O FindCommand método funciona em conjunto com o DisableAllCommands propriedade para especificar como MenuCommand os objetos interagem com o comportamento.
Adorners
Um Adorner pode ser visto como um proxy entre a interface do usuário elementos relacionados, que consistem em Glyph objetos e o BehaviorService.
Cada Adorner pode ser ativado e desativado. Ativado somente Adorner objetos receberão mensagens de teste e pintura visitas da BehaviorService.
Quando um Adorner é adicionado ao BehaviorServiceAdornerCollection da BehaviorService, os conjuntos de coleção a BehaviorService propriedade para que o Adorner pode retornar a chamada a BehaviorService.
Chamar o Adorner do objeto Invalidate método força seu associado BehaviorService para atualizar o Adorner janela
Comportamentos de envio
A maneira mais fácil para você adicionar Behavior objetos na pilha de comportamento está usando Glyph objetos, mas isso não é a única maneira. Glyphobjetos em si podem empurrar a Behavior objetos na pilha de comportamento e você também podem empurrar a Behavior objetos diretamente na pilha de comportamento. Considere o caso no qual você deseja arrastar uma alça de captura ao redor na superfície de design. Em vez de você escrever uma lógica para controlar quando o usuário está arrastando, da Glyph próprio realiza as seguintes ações em seqüência com a pilha de comportamento.
O Glyph possui um tipo de Behavior que responde a um gesto do mouse para baixo.
Quando o botão do mouse é pressionado, o Glyph envia uma nova Behavior na pilha de comportamento. Isso Behavior manipula o movimento do mouse e eventos de mouse-up. Ele também pode desativar todos os comandos de menu para que não há nenhuma maneira para atalhos de teclado ou outros comandos para ocorrer durante o arrasto.
Quando o botão do mouse é liberado, o Behavior finaliza o gesto de movimentação e pops próprio fora da pilha de comportamento. Isso restaura anterior automaticamente Behavior.
Observação |
---|
O BehaviorService arquitetura está vinculada ao modelo de Windows Forms e, portanto, não oferece suporte a outras tecnologias de exibição, tais como formulários da Web. |