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
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.
OwnerItem acessa o item que é fonte do item drop-down. Isso é semelhante a SourceControl, mas em vez de retornar um controle, ele retorna um ToolStripItem.
SourceControl determina qual controle é fonte das 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 pai denota o corrente retornado ToolStrip em que o item é exibido, que pode ser na área de excedentes.
Owner Retorna o ToolStrip cuja coleção de itens contém corrente ToolStripItem. Esta é a melhor maneira para fazer referência ImageList ou outras propriedades no nível superior ToolStrip sem escrever código especial para manipular o estouro.
Comportamento de controles herdados
Os seguintes controles estão bloqueado sempre que eles são usados na herança:
ToolStripPanel que inclua os painéis em uma ToolStripContainer e também individuais ToolStripPanel controles.
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:
Criar um novo aplicativo de Formulários do Windows.
Adicionar um ToolStripContainer no formulário.
conjunto o modificador de acesso do ToolStripContainer para public ou protected.
Adicione qualquer combinação de ToolStrip, MenuStrip, e ContextMenuStrip os controles para o ToolStripPanel as regiões das ToolStripContainer.
Crie o projeto.
Adicione um formulário que herda a partir do primeiro formulário.
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".
Navegação
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.
StackWithOverflow é o padrão. Essa configuração faz com que o ToolStrip Para alterar seu layout automaticamente de acordo com o Orientation propriedade para lidar com arrastar e cenários de encaixe.
VerticalStackWithOverflow processa o ToolStrip itens na vertical ao lado uns dos outros.
HorizontalStackWithOverflow processa o ToolStrip itens horizontalmente ao lado uns dos outros.
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:
Todos os recursos de FlowLayoutPanel são expostos pela LayoutSettings propriedade. Você deve converter o LayoutSettings classe para um FlowLayoutSettings classe.
Você pode usar o Dock e Anchor Propriedades no código para alinhar itens de linha.
The Alignment propriedade é ignorada.
No LayoutCompleted evento, você pode inspecionar o Placement propriedade para determinar se um item foi colocado no principal ToolStrip ou não couberam.
Alça não é processada e, portanto, um ToolStrip em Flow estilo de layout em um ToolStripPanel não pode ser movida.
The ToolStrip botão estouro não é processado, e Overflow é ignorado.
Tabela de layout
Table layout é o padrão para StatusStrip. É semelhante a TableLayoutPanel. sistema autônomo recursos de Flow layout são:
Todos os recursos de TableLayoutPanel são expostos pela LayoutSettings propriedade. Você deve converter o LayoutSettings classe para um TableLayoutSettings classe.
Você pode usar o Dock e Anchor Propriedades no código para alinhar itens dentro da célula de tabela.
The Alignment propriedade é ignorada.
No LayoutCompleted evento, você pode inspecionar o Placement propriedade para determinar se um item foi colocado no principal ToolStrip ou não couberam.
Alça não é processada e, portanto, um ToolStrip em Table estilo de layout em um ToolStripPanel não pode ser movida.
The ToolStrip botão estouro não é processado, e Overflow é ignorado.
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 |
---|---|---|---|---|---|
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-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:
ImageScalingSize é a escala da imagem final conforme determinado pela combinação da imagem ImageScaling configuração e o contêiner AutoSize a configuração.
If AutoSize é true (o padrão) e ToolStripItemImageScaling é SizeToFit, ocorre sem escala da imagem e o ToolStrip dimensionar é de maior item ou um determinado dimensionar mínimo.
If AutoSize é false e ToolStripItemImageScaling é None, nenhuma imagem nem ToolStrip dimensionamento ocorre.
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:
ToolStripManager oferece suporte ToolStrip-relacionados a tarefas de aplicativos inteiros, sistema autônomo opções de mesclagem, sistema autônomo configurações e renderizador.
ToolStripRenderer permite que você aplicar um estilo específico ou um tema a um ToolStrip com com facilidade.
ToolStripProfessionalRenderer cria as canetas e pincéis com base em uma tabela () substituíveis corProfessionalColorTable).
ToolStripSystemRenderer aplica as cores do sistema e um estilo visual simples para ToolStrip aplicativos.
ToolStripContainer é semelhante a SplitContainer. Ele usa quatro painéis encaixados lado (instâncias de ToolStripPanel) e um painel central (uma ocorrência da ToolStripContentPanel) para criar uma organização típica. Você não pode remover os painéis 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 nos painéis lado, você podem usar o painel central para outros controles. The ToolStripContentPanel também fornece uma maneira para obter suporte do processador no corpo do formulário para uma aparência consistente. ToolStripContainer não oferece suporte a vários documentos MDI (interface).
ToolStripPanel Fornece 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
Conceitos
Resumo da tecnologia de ToolStrip
Referência
Visão geral do controle ToolStrip (Windows Forms)
Outros recursos
Controle ToolStrip (Windows Forms)