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 eventos relacionados ao mouse, 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. Dentro de cada superfície camada você cria 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 operações de arrastar-e-soltar OLE, movimentos do mouse e comandos de menu. Behaviorobjetos também podem ser adicionados independentemente de um Glyph objeto, de modo que eles podem capturar em geral a entrada do usuário para o criador de todo. Três dos recursos mencionados anteriormente são implementados com o Behavior tipo.

Dica

Você deve adicionar uma referência ao assembly em 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, tais como OnMouseDragBegin, eram expostas pela ControlDesigner classe. Nesse modelo, grande parte da lógica de 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ê escreve uma grande quantidade de lógica de suporte.

O Behavior tipo resolve essa 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 é ativo Behaviore todos os usuário entrada é roteada para que Behavior.

Adornere Glyph objetos

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 simplificados processado objetos. A Glyph pode ser testada hit pelo serviço de comportamento e opcionalmente, ele pode expor um Behavior o objeto que se torna ativo Behavior para desde que o Glyph relatórios true do seu teste de ocorrência.

Enquanto o Windows Forms Designer ainda oferece suporte original ControlDesigner substituições para gera necessidade e o mouse se 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 manipulará a seleção de todos os UI 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 para o controle. Seus Behavior objetos arrastando as operações de controle.

Estendendo a Interface do usuário em tempo de Design

O BehaviorService modelo permite que a nova funcionalidade ser sobreposto facilmente em uma interface de usuário designer existentes. 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 (Glifo de marca inteligente).

O código de marca inteligente cria seu próprio Adorner de camada e adiciona Glyph objetos para essa camada. Isso mantém a marca inteligente Glyph objetos separam da seleção 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 simple. Se você precisar de funcionalidades complexas, você adicioná-lo à sua própria classe que deriva de 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-as da 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 é por meio de Glyph objetos, mas isso não é a única maneira. Glyphobjetos em si podem empurrar a Behavior a pilha de objetos no comportamento, e você também pode empurrar Behavior objetos diretamente na pilha 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, o Glyph si realiza as seguintes ações na seqüência com a pilha de comportamento.

  1. O Glyph possui um tipo de Behavior que responde a um gesto do mouse para baixo.

  2. Quando o botão do mouse é pressionado, o Glyph envia uma nova Behavior na pilha de comportamento. Isso Behavior trata os eventos de mouse-up e o movimento do mouse. 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.

  3. Quando o botão do mouse é liberado, o Behavior pops próprio desativado da pilha comportamento e finaliza o gesto de movimentação de objetos. Isso restaura as anteriores automaticamente Behavior.

Dica

O BehaviorService arquitetura está vinculada ao modelo de Windows Forms e, portanto, não oferece suporte a outras tecnologias de exibição, como, por exemplo, formulários da Web.

Consulte também

Referência

BehaviorService

Glyph

Adorner

EventHandler

Outros recursos

Estendendo o suporte para tempo de design