Arquitetura do controle ToolStrip

O ToolStrip e ToolStripItem classes fornecem um sistema flexível e extensível para exibir a barra de ferramentas, status e itens de menu. Essas classes estão contidas na System.Windows.Forms namespace e eles todos normalmente são nomeados com o ToolStrip"de" prefixo (como ToolStripOverflow) ou com a "faixa" sufixo (como MenuStrip).

ToolStrip

Os tópicos a seguintes descrevem ToolStrip e os controles que derivam do proprietário.

ToolStripé a classe base abstrata para MenuStrip, StatusStrip, e ContextMenuStrip. O objeto a seguir mostra do modelo de ToolStrip hierarquia de herança.

Modelo de objeto de ToolStrip

Modelo de objeto ToolStrip

Você pode acessar todos os itens em um ToolStrip por meio do Items coleção. Você pode acessar todos os itens em um ToolStripDropDownItem por meio do DropDownItems coleção. Em uma classe derivada de ToolStrip, você também pode usar o DisplayedItems propriedade para acessar somente os itens que estão sendo exibidos. Esses são os itens que não estão atualmente em um menu de estouro.

Os seguintes itens projetados especificamente para funcionar perfeitamente com os dois ToolStripSystemRenderer e ToolStripProfessionalRenderer em todas as orientações. Eles estão disponíveis por padrão em tempo de design para o ToolStrip controle:

MenuStripé o recipiente de nível superior que substitui MainMenu. Ele também fornece tratamento de chave e o documento de vários recursos de interface (MDI). Funcionalmente, ToolStripDropDownItem e ToolStripMenuItem trabalha junto com MenuStrip, embora eles derivam de ToolStripItem.

Os seguintes itens projetados especificamente para funcionar perfeitamente com os dois ToolStripSystemRenderer e ToolStripProfessionalRenderer em todas as orientações. Eles estão disponíveis por padrão em tempo de design para o MenuStrip controle:

StatusStrip

StatusStripsubstitui o StatusBar de controle. Recursos especiais de StatusStrip incluem um layout personalizado de tabela, o suporte para o formulário do dimensionando e movendo seguia e o Spring propriedade, que permite uma ToolStripStatusLabel para preencher automaticamente o espaço disponível.

Os seguintes itens projetados especificamente para funcionar perfeitamente com os dois ToolStripSystemRenderer e ToolStripProfessionalRenderer em todas as orientações. Eles estão disponíveis por padrão em tempo de design para o StatusStrip controle:

ContextMenuStrip

ContextMenuStripsubstitui ContextMenu. Você pode associar um ContextMenuStrip com qualquer controle e um direito do mouse clique automaticamente exibe o menu de contexto (ou menu de atalho). Você pode mostrar um ContextMenuStrip programaticamente usando o Show método. ContextMenuStripsuporta cancelável Opening e Closing eventos para manipular a população dinâmica e clique de vários cenários. ContextMenuStripoferece suporte a imagens, estado de seleção do item de menu, texto, teclas de acesso, atalhos e menus em cascata.

Os seguintes itens projetados especificamente para funcionar perfeitamente com os dois ToolStripSystemRenderer e ToolStripProfessionalRenderer em todas as orientações. Eles estão disponíveis por padrão em tempo de design para o ContextMenuStrip controle:

Recursos de ToolStrip genérico

Os tópicos seguintes descrevem os recursos e o comportamento são genéricas para o ToolStrip e controles derivados.

Pintura

Você pode fazer pintura personalizada de ToolStrip controles de várias maneiras. Como com outros controles Windows Forms, o ToolStrip e ToolStripItem têm substituível OnPaint métodos e Paint eventos. Como com pintura regular, o sistema de coordenadas é relativo à área cliente do controle; ou seja, o canto superior esquerdo do controle é 0, 0. O Paint eventos e OnPaint método para um ToolStripItem se comportam como outros eventos de pintura de controle.

O ToolStrip controles também fornecem acesso mais preciso para o processamento dos itens e recipiente através do ToolStripRenderer classe, que tem métodos substituíveis para pintar o plano de fundo, plano de fundo do item, a imagem do item, seta do item, texto do item, e borda da ToolStrip. Os argumentos de evento para esses métodos exponham várias propriedades, como retângulos, cores e formatos de texto que você pode ajustar conforme desejado.

Para ajustar a apenas alguns aspectos de como um item é pintado, você normalmente substituir o ToolStripRenderer.

Se você estiver escrevendo um novo item e quiser controlar todos os aspectos da pintura, substituir o OnPaint método. A partir do OnPaint, você pode usar os métodos a partir de ToolStripRenderer.

Por padrão, o ToolStrip é duplo em buffer, aproveitando o OptimizedDoubleBuffer configuração.

Domínio pai

O conceito de propriedade do contêiner e a elevação de nível é mais complexo em ToolStrip controles de outros controles de contêiner de Windows Forms. Isso é necessário para dar suporte a cenários dinâmicos como, por exemplo, área de excedentes, itens de lista suspensa de compartilhamento entre vários ToolStrip itens e para oferecer suporte a geração de um ContextMenuStrip do controle.

A lista a seguir descreve os membros relacionados à elevação de nível e explica o seu uso.

Comportamento de controles herdadas

Os seguintes controles estão bloqueados, sempre que eles são usados em herança:

Por exemplo, crie um novo aplicativo Windows Forms usando um ou mais dos controles na lista anterior. Definir o modificador de acesso de um ou mais controles para public ou protectede, então, construir o projeto. Adicionar um formulário que herda a partir do primeiro formulário e, em seguida, selecione um controle herdado. O controle aparecerá bloqueado se comportando como se o modificador de acesso foi private.

Suporte de ToolStripContainer de herança

O ToolStripContainer controle oferece suporte a cenários herdados limitados, semelhantes ao seguinte exemplo:

  1. Criar um novo aplicativo de Formulários do Windows.

  2. Adicionar um ToolStripContainer para o formulário.

  3. Definir o modificador de acesso da ToolStripContainer para public ou protected.

  4. Adicione qualquer combinação de ToolStrip, MenuStrip, e ContextMenuStrip os controles para o ToolStripPanel regiões da ToolStripContainer.

  5. Crie o projeto.

  6. Adicione um formulário que herda a partir do primeiro formulário.

  7. Selecione o herdadas ToolStripContainer no formulário.

Comportamento herdado de controles filho

Depois de concluir as etapas anteriores, ocorre o seguinte comportamento herdado:

  • No designer, o controle é exibida com um ícone herdado.

  • O ToolStripPanel controles estão bloqueados; Você não pode selecionar ou reorganizar seus conteúdos.

  • Você pode adicionar controles para o ToolStripContentPanel, mover os controles e torná-los controles filho da ToolStripContentPanel.

  • As alterações persistem após criar o formulário.

    ObservaçãoObservação

    Remova os modificadores de acesso a todos os ToolStripPanel controles que fazem parte de um ToolStripContainer. O modificador de acesso da ToolStripContainer governa o controle inteiro.

Confiança Parcial

As limitações do ToolStrips em confiança parcial são projetadas para impedir a entrada inadvertida de informações pessoais que podem ser usadas por pessoas não autorizadas ou serviços. As medidas de proteção são os seguintes:

  • ToolStripDropDowncontroles requerem AllWindows para exibir itens em um ToolStripControlHost. Isso se aplica a ambos os controles intrínsecos, como ToolStripTextBox, ToolStripComboBox, e ToolStripProgressBar , bem como para controles criados pelo usuário. Se esse requisito não for atendido, esses itens não são exibidos. Nenhuma exceção é gerada.

  • Definindo a AutoClose propriedade para false não é permitido e o cancelável Closing parâmetro do evento será ignorado. Isso torna impossível inserir mais de um pressionamento de tecla sem dispensar o item de lista suspensa. Se esse requisito não for atendido, tais itens não são exibidos. Nenhuma exceção é gerada.

  • Muitos pressionamento de tecla a manipulação de eventos não serão gerados se eles ocorrerem em contextos de confiança parcial diferente de AllWindows.

  • Teclas de acesso não são processados quando AllWindows não é concedido.

Uso

Os seguintes padrões de uso ser decisivo para ToolStrip layout, a interação do teclado e o comportamento do usuário final:

  • Ingressou em umToolStripPanel

    O ToolStrip pode ser reposicionado dentro do ToolStripPanel em ToolStripPanels. O Dock propriedade é ignorada e se a Stretch é a propriedade false, o tamanho da ToolStrip cresce à medida que os itens são adicionados ao ToolStripPanel. Normalmente, o ToolStrip não participa da ordem de guia.

  • Encaixado

    O ToolStrip é colocado em um lado de um recipiente de uma posição fixa, e seu tamanho expande sobre a borda inteira à qual ela está ancorada. Normalmente, o ToolStrip não participa da ordem de guia.

  • Posição absoluta

    O ToolStrip é como outros controles, ele é colocado pela Location tem um tamanho fixo, de propriedade e geralmente participa da ordem de guia.

Interação do teclado

Teclas de Acesso

Combinado com ou após a tecla ALT, as teclas de acesso são uma maneira de ativar um controle usando o teclado. ToolStripoferece suporte a ambas as teclas de acesso explícitas e implícitas. Definição explícita usa um e comercial (&) caracteres precede a letra. Definição implícita usa um algoritmo que tenta localizar um item coincidente com base na ordem de caracteres em um determinado Text propriedade.

Teclas de atalho

As teclas de atalho usadas por um MenuStrip usar uma combinação da Keys enumeração (que não é específico do pedido) para definir a tecla de atalho. Você também pode usar o ShortcutKeyDisplayString propriedade para exibir uma tecla de atalho com texto apenas, como exibir "Del" em vez de "Excluir".

A tecla ALT ativa o MenuStrip apontada por MainMenuStrip. A partir daí, CTRL + TAB navega entre ToolStrip controles dentro de ToolStripPanels. A tecla TAB e as teclas de seta no teclado numérico navegar entre os itens em um ToolStrip. Um algoritmo especial lida com a navegação na região de estouro. Barra de espaços selecionará um ToolStripButton, ToolStripDropDownButton, ou ToolStripSplitButton.

Foco e validação

Quando ativado pela tecla ALT, o MenuStrip ou ToolStrip normalmente levar nem remover o foco do controle que atualmente tem o foco. Se há um controle hospedado dentro do MenuStrip ou um drop-down da MenuStrip, o foco de ganhos do controle quando o usuário pressiona a tecla de guia. Em geral, o GotFocus, LostFocus, Enter, e Leave eventos de MenuStrip não pode ser disparado quando eles são ativados pelo teclado. Em tais casos, use o MenuActivate e MenuDeactivate eventos em vez disso.

Por padrão, CausesValidation é false. Chame Validate explicitamente no formulário para executar a validação.

Layout

Você pode controlar ToolStrip layout escolhendo um dos membros do ToolStripLayoutStyle com o LayoutStyle propriedade.

Layouts de pilha

Empilhamento é a arrumação de itens ao lado uns dos outros nas duas extremidades da ToolStrip. A lista a seguir descreve os layouts de pilha.

Outros recursos de Layouts de pilha

AlignmentDetermina o final da ToolStrip ao qual o item está alinhado.

Quando os itens não caber dentro da ToolStrip, um botão de estouro aparece automaticamente. O Overflow propriedade determina se um item será exibido na área de excedentes sempre, conforme necessário, ou nunca.

No LayoutCompleted evento, você pode inspecionar a Placement propriedade para determinar se um item foi colocado no principal ToolStrip, o estouro de ToolStrip, ou se ele não estiver sendo exibido em tudo. Os motivos típicos por que um item não será exibido são que o item não couberam na principal ToolStrip e seus Overflow propriedade foi definida para Never.

Fazer um ToolStrip Movível colocando-o um ToolStripPanel e configuração de seu GripStyle para Visible.

Outras opções de Layout

Outras opções de layout são Flow e Table.

Layout de fluxo

Flowlayout é o padrão para ContextMenuStrip, ToolStripDropDownMenu, e ToolStripOverflow. É semelhante do FlowLayoutPanel. Os recursos do Flow layout são da seguinte maneira:

Layout da tabela

Tablelayout é o padrão para StatusStrip. É semelhante a TableLayoutPanel. Os recursos do Flow layout são da seguinte maneira:

ToolStripItem

Os tópicos a seguintes descrevem ToolStripItem e os controles que derivam do proprietário.

ToolStripItemé a classe base abstrata para todos os itens que entram em um ToolStrip. O objeto a seguir mostra do modelo de ToolStripItem hierarquia de herança.

Modelo de objeto de ToolStripItem

Modelo de objeto ToolStripItem

ToolStripItemclasses ou herdar diretamente de ToolStripItem, ou indiretamente herdam de ToolStripItem por meio de ToolStripControlHost ou ToolStripDropDownItem.

ToolStripItemcontroles devem estar contidas em um ToolStrip, MenuStrip, StatusStrip, ou ContextMenuStrip e não podem ser adicionados diretamente a um formulário. As várias classes de contêiner foram projetadas para conter um subconjunto apropriado de ToolStripItem controles.

A tabela a seguir lista as ações ToolStripItem controles e os recipientes no qual eles examinar melhor. Embora qualquer ToolStrip item pode ser hospedado em qualquer ToolStrip-derivado de contêiner, esses itens foram projetados para aparência melhor nos seguintes recipientes:

ObservaçãoObservação

ToolStripDropDownnão aparece na caixa de ferramentas de designer.

Item contido

ToolStrip

MenuStrip

ContextMenuStrip

StatusStrip

ToolStripDropDown

ToolStripButton

Sim

Não

Não

Não

Sim

ToolStripComboBox

Sim

Sim

Sim

Não

Sim

ToolStripSplitButton

Sim

Não

Não

Sim

Sim

ToolStripLabel

Sim

Não

Não

Sim

Sim

ToolStripSeparator

Sim

Sim

Sim

Não

Sim

ToolStripDropDownButton

Sim

Não

Não

Sim

Sim

ToolStripTextBox

Sim

Sim

Sim

Não

Sim

ToolStripMenuItem

Não

Sim

Sim

Não

Não

ToolStripStatusLabel

Não

Não

Não

Sim

Não

ToolStripProgressBar

Sim

Não

Não

Sim

Não

ToolStripControlHost

Sim

Sim

Não

Sim

Sim

ToolStripButton

ToolStripButtoné o item de botão para ToolStrip. Você pode exibi-la com vários estilos de borda e você pode usá-lo para representar e ativar estados operacionais. Você também pode definir que ele tenha o foco por padrão.

ToolStripLabel

O ToolStripLabel fornece a funcionalidade de rótulo em ToolStrip controles. O ToolStripLabel é como um ToolStripButton que não recebe o foco por padrão e que não processa como enviado ou realçada.

ToolStripLabelcomo um item hospedado oferece suporte a chaves de acesso.

Use o LinkColor, LinkVisited, e LinkBehavior Propriedades em um ToolStripLabel para oferecer suporte a controle de link em um ToolStrip.

ToolStripStatusLabel

ToolStripStatusLabelé uma versão do ToolStripLabel projetado especificamente para uso em StatusStrip. Os recursos especiais incluem BorderStyle, BorderSides, e Spring.

ToolStripSeparator

O ToolStripSeparator adiciona uma linha vertical ou horizontal a uma barra de ferramentas ou menu, dependendo da orientação. Ele fornece a distinção entre itens, como em um menu ou agrupamento de.

Você pode adicionar um ToolStripSeparator em tempo de design, escolhendo a partir de uma lista drop-down. No entanto, você pode também criar automaticamente um ToolStripSeparator , digitando um hífen (-) no nó do modelo de designer ou de Add método.

ToolStripControlHost

ToolStripControlHosté a classe base abstrata para ToolStripComboBox, ToolStripTextBox, e ToolStripProgressBar. ToolStripControlHostpodem hospedar outros controles, incluindo controles personalizados, de duas maneiras:

  • Construir um ToolStripControlHost com uma classe que deriva de Control. Acesso completo a controle hospedado e propriedades, você deve converter o Control de propriedade volta para a real classe ele representa.

  • Estender ToolStripControlHoste no construtor do padrão da classe herdada, chamar o construtor de classe base, passando uma classe que deriva de Control. Essa opção permite dispor os métodos de controle comuns e as propriedades para facilitar o acesso em um ToolStrip.

ToolStripComboBox

ToolStripComboBoxé o ComboBox otimizado para hospedagem em um ToolStrip. Um subconjunto de eventos e as propriedades do controle hospedado estão expostos na ToolStripComboBox nível, mas a base ComboBox controle é totalmente acessível por meio de ComboBox propriedade.

ToolStripTextBox

ToolStripTextBoxé o TextBox otimizado para hospedagem em um ToolStrip. Um subconjunto de eventos e as propriedades do controle hospedado estão expostos na ToolStripTextBox nível, mas a base TextBox controle é totalmente acessível por meio de TextBox propriedade.

ToolStripProgressBar

ToolStripProgressBaré o ProgressBar otimizado para hospedagem em um ToolStrip. Um subconjunto de eventos e as propriedades do controle hospedado estão expostos na ToolStripProgressBar nível, mas a base ProgressBar controle é totalmente acessível por meio de ProgressBar propriedade.

ToolStripDropDownItem

ToolStripDropDownItemé a classe base abstrata para ToolStripMenuItem, ToolStripDropDownButton, e ToolStripSplitButton, que pode hospedar diretamente de itens ou itens adicionais do host em um recipiente drop-down. Fazer isso, definindo a DropDown propriedade para um ToolStripDropDown e configuração do Items propriedade da ToolStripDropDown. Acessar esses itens de lista suspensa diretamente por meio de DropDownItems propriedade.

ToolStripMenuItem

ToolStripMenuItemé um ToolStripDropDownItem que funciona com o ToolStripDropDownMenu e ContextMenuStrip para lidar com a organização de realce, layout e coluna especial para menus.

ToolStripDropDownButton

ToolStripDropDownButtonparece ToolStripButton, mas mostra uma área suspensa quando o usuário clica em proprietário. Ocultar ou mostrar a seta suspensa, definindo a ShowDropDownArrow propriedade. ToolStripDropDownButtonhosts um ToolStripOverflowButton que exibe os itens de estouro de ToolStrip.

ToolStripSplitButton

ToolStripSplitButtoncombina o botão e a funcionalidade do botão drop-down.

Use o DefaultItem propriedade para sincronizar o Click eventos do item drop-down escolhido com o item exibido no botão.

Recursos de ToolStripItem genérico

ToolStripItemoferece os seguintes recursos genéricos e opções para herdar de controles:

  • Eventos principais

  • Tratamento de imagem

  • Alinhamento

  • Relação de texto e imagem

  • Estilo de exibição

Eventos principais

ToolStripItemcontroles recebem seus próprios clicar, mouse e eventos de pintura e podem executar alguns teclado pré-processamento também.

Tratamento de imagem

O Image, ImageAlign, ImageIndex, ImageKey, e ImageScaling Propriedades referem-se a diversos aspectos de tratamento de imagem. Usar imagens nos ToolStrip , definindo a essas propriedades diretamente ou definindo a time–only de execução ImageList propriedade.

Escala da imagem é determinada pela interação de propriedades em ambos os ToolStrip e ToolStripItem, da seguinte forma:

Alinhamento

O valor da Alignment propriedade determina o final da ToolStrip no qual um item é exibido. O Alignment propriedade só funciona quando o estilo de layout da ToolStrip é definido como um dos valores de estouro de pilha.

Itens são colocados na ToolStrip na ordem em que os itens aparecem na coleção de itens. Para alterar programaticamente onde disposto um item, use o Insert método para mover o item na coleção. Esse método Move o item, mas não duplicar.

Texto e relacionamento de imagem

O TextImageRelation propriedade define o posicionamento relativo da imagem com relação ao texto em um ToolStripItem. Os itens que não têm uma imagem, texto ou ambos são tratados como casos especiais para que o ToolStripItem não exibe um ponto vazio para o faltando elemento ou elementos.

Estilo de exibição

DisplayStylepermite que você defina os valores das propriedades do item de texto e imagem enquanto exibe apenas o que você deseja. Isso normalmente é usado para alterar o estilo de exibição quando mostrando o mesmo item em um contexto diferente.

Classes de Acessórios

Classes que fornecem várias outras funcionalidades incluem:

Consulte também

Referência

Visão geral do controle ToolStrip (Windows Forms)

Conceitos

Resumo da tecnologia de ToolStrip

Outros recursos

Controle ToolStrip (Windows Forms)

Controle MenuStrip (Windows Forms)

Controle StatusStrip

ContextMenuStrip Control

BindingNavigator Control (Windows Forms)