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
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
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.
OwnerItemacessa o item que é a origem do item drop-down. Isso é semelhante a SourceControl, mas em vez de retornar a um controle, ele retorna um ToolStripItem.
SourceControldetermina qual controle é a origem da ContextMenuStrip quando vários controles compartilham o mesmo ContextMenuStrip.
GetCurrentParenté um acessador de somente leitura para o Parent propriedade. Um pai difere de um proprietário atual retornado de denota um pai ToolStrip no qual o item é exibido, que pode ser na área de excedentes.
OwnerRetorna o ToolStrip cuja coleção de itens contém atual ToolStripItem. Esta é a melhor maneira de fazer referência a ImageList ou outras propriedades no nível superior ToolStrip sem escrever código especial para manipular o estouro.
Comportamento de controles herdadas
Os seguintes controles estão bloqueados, sempre que eles são usados em herança:
ToolStripPanelque inclui os painéis em uma ToolStripContainer e também individuais ToolStripPanel controles.
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:
Criar um novo aplicativo de Formulários do Windows.
Adicionar um ToolStripContainer para o formulário.
Definir o modificador de acesso da ToolStripContainer para public ou protected.
Adicione qualquer combinação de ToolStrip, MenuStrip, e ContextMenuStrip os controles para o ToolStripPanel regiões da ToolStripContainer.
Crie o projeto.
Adicione um formulário que herda a partir do primeiro formulário.
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çã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".
Navegação
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.
StackWithOverflowé o padrão. Essa configuração faz com que o ToolStrip para alterar seu layout automaticamente de acordo com o Orientation propriedade tratar arrastando e encaixe cenários.
VerticalStackWithOverflowprocessa o ToolStrip itens ao lado uns dos outros verticalmente.
HorizontalStackWithOverflowprocessa o ToolStrip itens ao lado uns dos outros horizontalmente.
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:
Todos os recursos de FlowLayoutPanel são expostos pelo LayoutSettings propriedade. Você deve converter o LayoutSettings de classe para um FlowLayoutSettings classe.
Você pode usar o Dock e Anchor Propriedades no código para alinhar os itens de linha.
O Alignment propriedade é ignorada.
No LayoutCompleted evento, você pode inspecionar a Placement propriedade para determinar se um item foi colocado no principal ToolStrip ou fez o ajuste.
Alça não é processada e, portanto, um ToolStrip na Flow o estilo de layout em um ToolStripPanel não pode ser movida.
O ToolStrip o botão de estouro não é processado, e Overflow será ignorado.
Layout da tabela
Tablelayout é o padrão para StatusStrip. É semelhante a TableLayoutPanel. Os recursos do Flow layout são da seguinte maneira:
Todos os recursos de TableLayoutPanel são expostos pelo LayoutSettings propriedade. Você deve converter o LayoutSettings de classe para um TableLayoutSettings classe.
Você pode usar o Dock e Anchor Propriedades no código para alinhar os itens dentro da célula de tabela.
O Alignment propriedade é ignorada.
No LayoutCompleted evento, você pode inspecionar a Placement propriedade para determinar se um item foi colocado no principal ToolStrip ou fez o ajuste.
Alça não é processada e, portanto, um ToolStrip na Table o estilo de layout em um ToolStripPanel não pode ser movida.
O ToolStrip o botão de estouro não é processado, e Overflow será ignorado.
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
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ção |
---|
ToolStripDropDownnão aparece na caixa de ferramentas de designer. |
Item contido |
ToolStrip |
MenuStrip |
ContextMenuStrip |
StatusStrip |
ToolStripDropDown |
---|---|---|---|---|---|
Sim |
Não |
Não |
Não |
Sim |
|
Sim |
Sim |
Sim |
Não |
Sim |
|
Sim |
Não |
Não |
Sim |
Sim |
|
Sim |
Não |
Não |
Sim |
Sim |
|
Sim |
Sim |
Sim |
Não |
Sim |
|
Sim |
Não |
Não |
Sim |
Sim |
|
Sim |
Sim |
Sim |
Não |
Sim |
|
Não |
Sim |
Sim |
Não |
Não |
|
Não |
Não |
Não |
Sim |
Não |
|
Sim |
Não |
Não |
Sim |
Não |
|
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:
ImageScalingSizeé a escala da imagem final, conforme determinado pela combinação da imagem do ImageScaling a configuração e o recipiente AutoSize configuração.
Se AutoSize é true (padrão) e ToolStripItemImageScaling é SizeToFit, nenhuma escala da imagem ocorre e o ToolStrip é do tamanho do maior item, ou um tamanho mínimo prescrito.
Se AutoSize é false e ToolStripItemImageScaling é None, nenhuma imagem nem ToolStrip dimensionamento ocorre.
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:
ToolStripManagersuporta ToolStrip-relacionados a tarefas para aplicativos inteiros, como, por exemplo, opções de mesclagem, configurações e renderizador.
ToolStripRendererpermite que você aplique um estilo específico ou um tema para uma ToolStrip facilmente.
ToolStripProfessionalRenderercria canetas e pincéis com base em uma tabela de cores substituíveis (ProfessionalColorTable).
ToolStripSystemRendereraplica as cores do sistema e um estilo visual simples para ToolStrip aplicativos.
ToolStripContaineré semelhante a SplitContainer. Ele usa quatro painéis de lado ancorada (instâncias de ToolStripPanel) e um painel central (uma instância de ToolStripContentPanel) para criar uma disposição típica. Não é possível remover os painéis de lado, mas você pode ocultá-los. Não é possível remover nem ocultar o painel central. Você pode organizar um ou mais ToolStrip, MenuStrip, ou StatusStrip controles painéis laterais e você podem usar o painel central para outros controles. O ToolStripContentPanel também fornece uma maneira de obter suporte de processador no corpo do seu formulário para uma aparência consistente. ToolStripContainernão oferece suporte a interface de documentos múltiplos (MDI).
ToolStripPanelFornece espaço para mover e organizando ToolStrip controles. Você pode usar somente um painel, se você assim escolher, e ToolStripPanel funciona bem em cenários MDI.
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)