Partilhar via


Arquitetura do controle ToolStrip

The ToolStrip e ToolStripItem classes fornecem um sistema flexível e extensível para a exibição de itens de menu, status e barra de ferramentas. Todas essas classes estão contidas no System.Windows.Formsnamespace e eles são todos normalmente denominados com o prefixo "ToolStrip" (sistema autônomo ToolStripOverflow) ou com o sufixo "Faixa" (sistema autônomo MenuStrip).

ToolStrip

Os tópicos a seguir descrevem ToolStrip e os controles que derivam-lo.

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

Modelo de objeto ToolStrip

Você pode acesso todos os itens de um ToolStrip por meio do Items coleção. Você pode acesso todos os itens de 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. Estes são os itens que não estão atualmente em um menu cheio.

Os itens a seguir são criados especificamente para funcionar diretamente com os dois ToolStripSystemRenderer e ToolStripProfessionalRenderer em todas as orientações. Eles estão disponível por padrão em time de design para o ToolStrip controle:

MenuStrip é o contêiner de nível superior substitui MainMenu. Ele também fornece manipulação de chave e vários documentos recursos da interface (MDI).Funcionalmente, ToolStripDropDownItem e ToolStripMenuItem Trabalhe junto com MenuStrip, embora elas derivam ToolStripItem.

Os itens a seguir são criados especificamente para funcionar diretamente com os dois ToolStripSystemRenderer e ToolStripProfessionalRenderer em todas as orientações. Eles estão disponível por padrão em time de design para o MenuStrip controle:

StatusStrip

StatusStrip substitui o StatusBar controle. Recursos especiais de StatusStrip incluir um layout de tabela personalizada, o suporte para o formulário de dimensionamento e movimentação grips e o Spring propriedade, que permite um ToolStripStatusLabel para preencher automaticamente o espaço disponível.

Os itens a seguir são criados especificamente para funcionar diretamente com os dois ToolStripSystemRenderer e ToolStripProfessionalRenderer em todas as orientações. Eles estão disponível por padrão em time de design para o StatusStrip controle:

ContextMenuStrip

ContextMenuStrip substitui ContextMenu. Você pode associar um ContextMenuStrip com qualquer controle e um direito do mouse o clicar exibe automaticamente o menu de contexto (ou menu de atalho). Você pode mostrar um ContextMenuStrip programaticamente, usando o Show método. ContextMenuStrip suporta cancelável Opening e Closing eventos para lidar com população dinâmico e cenários de clicar múltiplo. ContextMenuStrip oferece suporte a imagens, estado de seleção do item de menu, texto, as teclas de acesso, atalhos e menus em cascata.

Os itens a seguir são criados especificamente para funcionar diretamente com os dois ToolStripSystemRenderer e ToolStripProfessionalRenderer em todas as orientações. Eles estão disponível por padrão em time de design para o ContextMenuStrip controle:

Recursos de ToolStrip genérico

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

Pintura

Você pode fazer pintura personalizada em ToolStrip controles de várias maneiras. sistema autônomo ocorre com outros controles Windows Forms, a ToolStrip e ToolStripItem ambos têm substituível OnPaint métodos e Paint eventos. sistema autônomo com pintura regular, o sistema de coordenada é em relação à área de cliente do controle; ou seja, o canto superior esquerdo do controle é 0, 0.The Paint eventos e OnPaint método para um ToolStripItem se comportam como outros eventos de controle de pintura.

The ToolStrip controles também fornecem acesso mais preciso para o renderização de itens e contêiner através de ToolStripRenderer classe, que tem métodos substituíveis para pintar o plano de fundo, plano de fundo do item, item de imagem, seta do item, texto do item, e borda das ToolStrip. sistema autônomo argumentos do evento para esses métodos expõem várias propriedades, sistema autônomo retângulos, cores e formatos de texto que você pode ajustar conforme desejado.

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

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

Por padrão, a ToolStrip é duplo em buffer, tirando proveito das OptimizedDoubleBuffer a configuração.

Pelo

O conceito de propriedade do contêiner e parenting é mais complexo em ToolStrip controles que em outros controles de contêiner do Windows Forms. Isso é necessário para dar suporte a cenários de dinâmicos, sistema autônomo estouro, compartilhando itens de lista suspensa entre vários ToolStrip itens e para oferecer suporte a geração de um ContextMenuStrip de um controle.

A lista a seguir descreve os membros relacionados ao parenting e explica seu uso.

Comportamento de controles herdados

Os seguintes controles estão bloqueado sempre que eles são usados na herança:

Por exemplo, criar um novo aplicativo Windows Forms usando um ou mais dos controles na lista anterior.conjunto o modificador de acesso de um ou mais controles para public ou protectede, em seguida, criar o projeto. Adicionar um formulário que herda a partir do primeiro formulário e, em seguida, selecionar um controle herdado.O controle aparecerá bloqueado se comportando sistema autônomo se o modificador de acesso foi private.

Suporte de ToolStripContainer de herança

The ToolStripContainer controle suporta cenários herdados limitados, semelhante ao exemplo a seguir:

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

  2. Adicionar um ToolStripContainer no formulário.

  3. conjunto o modificador de acesso do ToolStripContainer para public ou protected.

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

  5. Crie o projeto.

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

  7. selecionar o herdadas ToolStripContainer no formulário.

Comportamento herdado de controles filho

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

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

  • The ToolStripPanel controles estão bloqueados; você não pode selecionar ou reorganizar seu Sumário.

  • Você pode adicionar controles à ToolStripContentPanel, movam os controles e torná-los controles filho da ToolStripContentPanel.

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

    Observação:

    Remova os modificadores de acesso de todos ToolStripPanel controles que fazem parte de um ToolStripContainer. O modificador de acesso do ToolStripContainer Controla o controle inteiro.

Confiança Parcial

Limitações de ToolStrips com confiança parcial foram projetadas para impedir a entrada inadvertida de informações pessoais que podem ser usadas por pessoas não autorizadas ou serviços. sistema autônomo medidas de proteção são:

  • ToolStripDropDown controles requerem AllWindows Para exibir itens em um ToolStripControlHost. Isso se aplica a ambos sistema autônomo controles intrínsecos, sistema autônomo ToolStripTextBox, ToolStripComboBox, e ToolStripProgressBar sistema autônomo bem sistema autônomo para usuário criado controles. Se não for atendido esse requisito, esses itens não são exibidos.Uma exceção é gerada.

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

  • Pressionamento de tecla muitos manipulação de eventos não serão gerados se eles ocorrerem em confiança parcial contextos diferentes de AllWindows.

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

Uso

Os seguintes padrões de utilização ter uma influência no ToolStrip layout, interação do teclado e comportamento do usuário participante:

  • Ingressou em um ToolStripPanel

    The ToolStrip pode ser reposicionado dentro do ToolStripPanel e em ToolStripPanels. The Dock propriedade é ignorada e se o Stretch propriedade é false, o dimensionar das ToolStrip cresce sistema autônomo itens são adicionados para o ToolStripPanel. Normalmente, a ToolStrip não participa de guia ordem.

  • Encaixado

    The ToolStrip é colocado em um lado de um contêiner em uma posição fixa, e expande seu dimensionar sobre a borda inteira à qual ela está ancorada. Normalmente, a ToolStrip não participa de guia ordem.

  • Posição absoluta

    The ToolStrip é como outros controles, que é colocado pela Location propriedade, tem um dimensionar fixo e geralmente participa na ordem de tabulação.

Interação do teclado

Teclas de Acesso

Combinado com ou após o tecla ALT, teclas de acesso são uma maneira para ativar um controle usando o teclado.ToolStrip oferece suporte a ambas as teclas de acesso explícitas e implícitas. Definição explícita usa um caractere e comercial (&) que 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

O atalho chave s usado por um MenuStrip usar uma combinação de Keys enumeração (que não é específico do pedido) para definir o atalho chave. Você também pode usar o ShortcutKeyDisplayStringpropriedade para exibir um atalho chave com texto apenas, sistema autônomo exibir "Del" em vez de "Excluir".

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

Foco e validação

Quando ativado pelo ALT chave, a MenuStrip ou ToolStrip normalmente não tenham nem remover o foco do controle que tem o foco no momento. Se há um controle hospedado dentro de MenuStrip ou um menu suspenso da MenuStrip, o controle obtém foco quando o usuário pressiona a tecla guia. Em geral, a GotFocus, LostFocus, Enter, e Leave eventos de MenuStrip não podem ser gerados quando eles são ativados pelo teclado. Em tais casos, usar o MenuActivate e MenuDeactivate eventos em vez disso.

Por padrão, CausesValidation é false. De telefonarValidate explicitamente no seu formulário para executar a validação.

Layout

Controlar ToolStrip layout, escolhendo um dos membros do ToolStripLayoutStyle com o LayoutStyle propriedade.

Layouts de pilha

Empilhamento é a organização de itens ao lado uns dos outros em ambas as extremidades do ToolStrip. A lista a seguir descreve os layouts de pilha.

Outros recursos de layouts de pilha

Alignment Determina o participante das ToolStrip para o qual o item é alinhado.

Quando itens não ajuste dentro de ToolStrip, um botão de estouro é exibido automaticamente. The Overflow configuração da propriedade determina se um item será exibido na área de excedentes sempre, conforme o necessário ou nunca.

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

Tornar um ToolStrip móvel, colocando-o um ToolStripPanel configuração e seu GripStyle para Visible.

Opções de layout Outros

As outras opções de layout estarão Flow e Table.

Layout de fluxo

Flow layout é o padrão para ContextMenuStrip, ToolStripDropDownMenu, e ToolStripOverflow. É semelhante a FlowLayoutPanel. sistema autônomo recursos de Flow layout são:

Tabela de layout

Table layout é o padrão para StatusStrip. É semelhante a TableLayoutPanel. sistema autônomo recursos de Flow layout são:

ToolStripItem

Os tópicos a seguir descrevem ToolStripItem e os controles que derivam-lo.

ToolStripItem é a classe base abstrata para todos os itens que vão para um ToolStrip. O modelo de objeto a seguir mostra o ToolStripItem hierarquia de herança.

Modelo de objeto de ToolStripItem

ToolStripItem classes, herdam diretamente do ToolStripItem, ou indiretamente herdam de ToolStripItem por meio de ToolStripControlHost ou ToolStripDropDownItem.

ToolStripItem controles 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 os controles e os recipientes no qual aparência melhores. Embora qualquer ToolStrip item pode ser hospedado em qualquer ToolStrip-derivado contêiner, esses itens foram criados para aparência melhor nos seguintes recipientes:

Observação:

ToolStripDropDown não é exibido na caixa de ferramentas da 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-lo 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

The ToolStripLabel fornece funcionalidade de rótulo na ToolStrip controles. The ToolStripLabel é sistema autônomo um ToolStripButton que não recebe o foco por padrão e que não é processado sistema autônomo enviado ou realçada.

ToolStripLabel sistema autônomo um item de host oferece suporte a teclas de acesso.

Use o LinkColor, LinkVisited, e LinkBehavior propriedades em um ToolStripLabel para dar suporte ao 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

The 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, sistema autônomo em um menu ou de agrupamento de.

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

ToolStripControlHost

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

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

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

ToolStripComboBox

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

ToolStripTextBox

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

ToolStripProgressBar

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

ToolStripDropDownItem

ToolStripDropDownItem é a classe base abstrata para ToolStripMenuItem, ToolStripDropDownButton, e ToolStripSplitButton, que pode hospedar diretamente itens ou itens adicionais do host em um contêiner suspensa. Fazer isso configurando o DropDown propriedade para um ToolStripDropDown configuração e o Items propriedade das ToolStripDropDown. Acessar esses itens de lista suspensa diretamente através 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

ToolStripDropDownButton aparência ToolStripButton, mas mostra uma área suspensa quando o usuário clica nele. Ocultar ou mostrar a seta suspensa por configuração o ShowDropDownArrow propriedade. ToolStripDropDownButton hosts de um ToolStripOverflowButton que exibe os itens de estouro de ToolStrip.

ToolStripSplitButton

ToolStripSplitButton combina a funcionalidade botão drop-down e botão.

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

Recursos de ToolStripItem genérico

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

  • Eventos de núcleo

  • Manipulação de imagem

  • Alinhamento

  • Relação de texto e imagem

  • Estilo de exibição

Eventos principais

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

Manipulação de imagem

The Image, ImageAlign, ImageIndex, ImageKey, e ImageScaling propriedades pertencem a diversos aspectos de tratamento de imagem. Usar imagens em ToolStrip controles, a definição dessas propriedades diretamente ou definindo a time–only execução ImageList propriedade.

Escala da imagem é determinada pela interação de propriedades em ambos sistema autônomo ToolStrip e ToolStripItem, da seguinte maneira:

Alinhamento

O valor de Alignment propriedade determina o participante das ToolStrip em que um item é exibido. The Alignment propriedade funciona somente quando o estilo de layout das ToolStrip é conjunto para um dos valores de estouro de pilha.

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

Texto e imagem relação

The TextImageRelation propriedade define o posicionamento relativo da imagem com relação ao texto de um ToolStripItem. Itens que não possuem uma imagem, texto ou ambos são tratados sistema autônomo casos especiais para que o ToolStripItem não exibe um espaço vazio para o elemento ausente ou elementos.

Estilo de exibição

DisplayStyle permite que você defina os valores das propriedades de texto e imagem de um item ao exibir apenas o que você deseja. Isso normalmente é usado para alterar o estilo de exibição durante a exibição do mesmo item em um contexto diferente.

Classes de acessório

Classes que fornecem várias outras funcionalidades incluem:

Consulte também

Conceitos

Resumo da tecnologia de ToolStrip

Referência

Visão geral do controle ToolStrip (Windows Forms)

Outros recursos

Controle ToolStrip (Windows Forms)

MenuStrip controle (Windows Forms)

Controle StatusStrip

ContextMenuStrip controle

BindingNavigator controle (Windows Forms)