Escolar Documentos
Profissional Documentos
Cultura Documentos
À medida que você cria e modifica a interface do usuário de seus aplicativos dos
Windows Forms, será necessário adicionar, alinhar e posicionar controles. Os controles
são objetos que estão contidos em objetos de formulário. Cada tipo de controle tem
seu próprio conjunto de propriedades, métodos e eventos que o tornam adequado para
uma finalidade específica. Você pode manipular os controles no designer e escrever o
código para adicionar controles dinamicamente em tempo de execução.
Nesta seção
Colocando controles nos Windows Forms
Fornece links relacionados à colocação de controles em formulários.
Identificando controles dos Windows Forms individuais e fornecendo atalhos para eles
Descreve os usos dos atalhos de teclado, rótulos de texto em controles e teclas
modificadoras.
Seções relacionadas
Aplicativos cliente
Fornece uma visão geral do desenvolvimento de aplicativos baseados no Windows.
Como alinhar vários controles nos
Windows Forms
Artigo • 02/06/2023
Confira também
controles Windows Forms
Como Adicionar Controles ao Windows Forms
Controles a serem usados nos Windows Forms
Controles dos Windows Forms por função
Instruções passo a passo: organizando controles no Windows Forms usando guias
de alinhamento
Passo a passo: organizando controles nos Windows Forms usando um
TableLayoutPanel
Passo a passo: Organizando controles nos Windows Forms utilizando um
FlowLayoutPanel
Como: Transferir controles existentes a um pai diferente
Como ancorar controles no Windows
Forms
Artigo • 02/06/2023
7 Observação
3. Para definir uma âncora, clique na seção superior, esquerda, direita ou inferior da
cruz.
7 Observação
Controles herdados devem ser Protected para serem ancorados. Para alterar o nível de
acesso de um controle, defina sua propriedade Modifiers na janela Propriedades.
Confira também
controles Windows Forms
Visão geral da propriedade AutoSize
Como encaixar controles no Windows Forms
Passo a passo: Organizando controles nos Windows Forms utilizando um
FlowLayoutPanel
Passo a passo: organizando controles nos Windows Forms usando um
TableLayoutPanel
Passo a passo: Definir o layout de controles do Windows Forms com
preenchimento, margens e a propriedade AutoSize
Como encaixar controles no Windows
Forms
Artigo • 02/06/2023
Você pode encaixar controles nas bordas do formulário ou fazer com que eles
preencham o contêiner do controle (um controle de contêiner ou formulário). Por
exemplo, o Windows Explorer encaixa seu TreeView controle no lado esquerdo da janela
e seu ListView controle para o lado direito da janela. Use a Dock propriedade para todos
os controles de Windows Forms visíveis para definir o modo de encaixe.
7 Observação
A Dock propriedade interage com a AutoSize propriedade. Para obter mais informações,
consulte Visão Geral da Propriedade AutoSize.
Um editor será exibido que mostra uma série de caixas que representam as bordas
e o centro do formulário.
7 Observação
Controles herdados devem ser Protected para poderem ser encaixados. Para
alterar o nível de acesso de um controle, defina sua propriedade Modifier na
janela Propriedades .
Confira também
controles Windows Forms
Identificando controles dos Windows Forms individuais e fornecendo atalhos para
eles
Controles a serem usados nos Windows Forms
Controles dos Windows Forms por função
Como: Ancorar e encaixar controles filho em um controle FlowLayoutPanel
Como ancorar e encaixar controles filho em um controle TableLayoutPanel
Visão geral da propriedade AutoSize
Como ancorar controles no Windows Forms
como: objetos de camada no Windows
Forms
Artigo • 02/06/2023
C#
txtFirstName.BringToFront();
7 Observação
Confira também
controles de Windows Forms
Identificando controles dos Windows Forms individuais e fornecendo atalhos para
eles
Controles a serem usados nos Windows Forms
Controles dos Windows Forms por função
Como bloquear controles para Windows
Forms
Artigo • 02/06/2023
Como alternativa, clique com o botão direito do mouse no controle e escolha Bloquear
Controles.
7 Observação
O bloqueio dos controles evita que eles sejam arrastados para um novo tamanho
ou local na superfície de design. No entanto, você ainda pode alterar o tamanho ou
local dos controles por meio da janela Propriedades ou no código.
7 Observação
Confira também
controles Windows Forms
Identificando controles dos Windows Forms individuais e fornecendo atalhos para
eles
Controles a serem usados nos Windows Forms
Controles dos Windows Forms por função
Como posicionar controles no Windows
Forms
Artigo • 02/06/2023
7 Observação
7 Observação
C#
C#
button1.Left = 300;
C#
button1.Left += 200;
7 Observação
Confira também
controles Windows Forms
Instruções passo a passo: organizando controles no Windows Forms usando guias
de alinhamento
Passo a passo: organizando controles nos Windows Forms usando um
TableLayoutPanel
Passo a passo: Organizando controles nos Windows Forms utilizando um
FlowLayoutPanel
Identificando controles dos Windows Forms individuais e fornecendo atalhos para
eles
Controles a serem usados nos Windows Forms
Controles dos Windows Forms por função
Como configurar o local da tela dos Windows Forms
Como redimensionar controles no
Windows Forms
Artigo • 02/06/2023
7 Observação
2. No menu Formato, selecione Igualar tamanho e selecione uma das quatro opções.
Os três primeiros comandos alteram as dimensões dos controles para
corresponder ao controle selecionado primeiro.
Confira também
Controles de Windows Forms
Identificando controles dos Windows Forms individuais e fornecendo atalhos para
eles
Controles a serem usados nos Windows Forms
Controles dos Windows Forms por função
Como redimensionar Windows Forms usando o designer
Como definir opções de grade para
todos os Windows Forms
Artigo • 02/06/2023
Confira também
Opções: Designer de Windows Forms
Como definir a ordem de tabulação em
Windows Forms
Artigo • 02/06/2023
7 Observação
3. Quando terminar, selecione Tab Order no menu Exibir novamente para sair do
modo de ordem de tabulação.
7 Observação
Controles que não podem obter o foco, bem como controles desabilitados e
invisíveis, não têm uma TabIndex propriedade e não estão incluídos na ordem
de tabulação. À medida que um usuário pressiona a tecla Tab, esses controles
são ignorados.
Além disso, por padrão, um GroupBox controle tem seu próprio TabIndex valor, que é
um número inteiro. Um GroupBox controle em si não pode ter foco em tempo de
execução. Assim, cada controle dentro de um GroupBox tem seu próprio valor decimal
TabIndex , começando com .0. Naturalmente, à medida que o TabIndexGroupBox
controle é incrementado, os controles dentro dele serão incrementados
adequadamente. Se você alterou um TabIndex valor de 5 para 6, o TabIndex valor do
primeiro controle em seu grupo será alterado automaticamente para 6,0 e assim por
diante.
Por fim, qualquer controle dos muitos no seu formulário podem ser ignorados na ordem
de tabulação. Normalmente, pressionar Tab sucessivamente em tempo de execução
seleciona cada controle na ordem de tabulação. Ao desativar a TabStop propriedade,
você pode fazer com que um controle seja passado na ordem de tabulação do
formulário.
Um controle cuja TabStop propriedade foi definida para false ainda manter sua
posição na ordem de tabulação, mesmo que o controle seja ignorado quando você
percorre os controles com a tecla Tab.
7 Observação
Consulte também
controles Windows Forms
Controles a serem usados nos Windows Forms
Controles dos Windows Forms por função
Passo a passo: organizar controles em
Windows Forms usando snaplines
Artigo • 02/06/2023
O posicionamento exato dos controles no formulário é uma prioridade alta para muitos
aplicativos. O Designer de Formulários do Windows fornece várias ferramentas de
layout para fazer isso. Um dos mais importantes é o SnapLine recurso.
Criar o projeto
1. No Visual Studio, crie um projeto de aplicativo baseado no Windows chamado
"SnaplineExample".
5. Mova o segundo Button controle até que ele esteja quase nivelado com o
primeiro. Observe a guia de alinhamento que aparece na linha de base de texto de
ambos os botões e observe que o controle que você está movendo se ajusta para
uma posição nivelada exatamente com o outro controle.
6. Mova o segundo Button controle até que ele seja posicionado diretamente acima
do primeiro. Observe as guias de alinhamento que aparecem ao longo das bordas
esquerda e direita de ambos os botões e observe que o controle que você está
movendo se ajusta para uma posição alinhada exatamente com o outro controle.
7. Selecione um dos Button controles e mova-o para perto do outro, até que eles
estejam quase tocando. Observe a guia de alinhamento que aparece entre eles.
Essa é a distância recomendada entre as bordas dos controles. Observe também
que o controle que você está movendo se encaixa nessa posição.
9. Mova um dos Panel controles até que esteja quase nivelado com o primeiro.
Observe as guias de alinhamento que aparecem ao longo das bordas superior e
inferior de ambos os controles e observe que o controle que você está movendo
se ajusta para uma posição alinhada exatamente com o outro controle.
7 Observação
3. Mova o Button controle para perto da borda direita do formulário até que um
snapline seja exibido. Essa distância agora é fornecida pelo valor da propriedade
do Padding formulário.
7. Mova o Button controle para perto da borda direita do GroupBox controle até que
um snapline seja exibido. Mova o Button controle dentro do GroupBox controle e
observe onde as linhas de ajuste aparecem.
5. Arraste o ponteiro até que ele se alinhe com o outro controle no formulário.
Observe que aparece uma guia de alinhamento para indicar o alinhamento.
3. Altere o valor da propriedade Label do controle AutoSize para true . Observe que
as bordas do controle são ajustadas para se ajustar ao texto de exibição.
4. Mova o Label controle para a esquerda do TextBox controle, para que ele seja
alinhado com a borda inferior do TextBox controle. Observe a guia de alinhamento
que aparece ao longo das bordas inferiores dos dois controles.
5. Mova o Label controle ligeiramente para cima até que o Label texto e o TextBox
texto estejam alinhados. Observe a guia de alinhamento com um estilo diferente
que aparece, indicando quando os campos de texto de ambos os controles estão
alinhados.
2. Pressione Ctrl+seta para baixo. Observe que o controle se move para baixo no
formulário até a primeira posição de alinhamento horizontal disponível.
3. Pressione Ctrl+seta para baixo até que o controle chegue à parte inferior do
formulário. Observe as posições que ele ocupa conforme se move para baixo no
formulário.
5. Pressione aseta para a direitactrl+ até que o controle atinja o lado do formulário.
Observe as posições que ele ocupa conforme se move no formulário.
Desabilitar snaplines
Pressione a tecla Alt e, ao mover um controle ao redor do formulário.
Não são exibidas linhas de ajuste e o controle não se ajusta a nenhuma posição de
alinhamento em potencial.
Próximas etapas
As guias de alinhamento oferecem uma forma intuitiva de alinhar controles no
formulário. Sugestões para exploração adicional incluem:
Confira também
SnapLine
Passo a passo: Organizando controles nos Windows Forms utilizando um
FlowLayoutPanel
Passo a passo: organizando controles nos Windows Forms usando um
TableLayoutPanel
Passo a passo: Definir o layout de controles do Windows Forms com
preenchimento, margens e a propriedade AutoSize
Como reatribuir controles existentes
para um pai diferente
Artigo • 02/06/2023
Confira também
FlowLayoutPanel
TableLayoutPanel
Passo a passo: organizando controles nos Windows Forms usando um
TableLayoutPanel
Instruções passo a passo: organizando controles no Windows Forms usando guias
de alinhamento
Passo a passo: definir controles com
preenchimento, margens e a
propriedade AutoSize
Artigo • 02/06/2023
O posicionamento exato dos controles no formulário é uma prioridade alta para muitos
aplicativos. O Designer de Windows Forms no Visual Studio oferece muitas ferramentas
de layout para fazer isso. Três das mais importantes são as Marginpropriedades ,
Paddinge AutoSize que estão presentes em todos os controles Windows Forms.
Pré-requisitos
Você precisará do Visual Studio para concluir este passo a passo.
Criar o projeto
1. No Visual Studio, crie um projeto de aplicativo do Windows chamado
LayoutExample .
2. Selecione um dos Button controles e mova-o para perto do outro, até que eles
estejam quase tocando.
Observe a guia de alinhamento que aparece entre eles. Essa distância é a soma
dos valores dos Margin dois controles. O controle que você está movendo se
ajusta a essa distância. Para mais detalhes, consulte Instruções passo a passo:
organizando controles nos Windows Forms usando linhas de alinhamento.
Quando a AutoSize propriedade for definida como true , o controle será dimensionado
para seu conteúdo. Para obter mais informações, consulte Visão Geral da Propriedade
AutoSize.
3. Alterar a Button propriedade do Text controle para este botão tem uma cadeia de
caracteres longa para sua propriedade Text.
5. Altere a Button propriedade do Text controle para "Este botão tem uma cadeia de
caracteres longa para sua propriedade Text".
11. Altere a Button propriedade do Text controle para "Este botão tem uma cadeia de
caracteres longa para sua propriedade Text".
7 Observação
O Panel controle se dimensiona para cercar o Button controle. Você não pode
redimensionar o Panel controle.
7. Arraste o Button controle em direção ao canto superior esquerdo do Panel
controle.
Próximas etapas
Há muitos outros recursos de layout para organizar controles em seus aplicativos dos
Windows Forms. Aqui estão algumas combinações que você pode tentar:
Confira também
AutoSize
DockPadding
Margin
Padding
Visão geral da propriedade AutoSize
Passo a passo: organizando controles nos Windows Forms usando um
TableLayoutPanel
Passo a passo: Organizando controles nos Windows Forms utilizando um
FlowLayoutPanel
Instruções passo a passo: organizando controles no Windows Forms usando guias
de alinhamento
Colocando controles nos Windows
Forms
Artigo • 02/06/2023
Há uma grande variedade de controles que você pode colocar em Windows Forms,
dependendo das necessidades do seu aplicativo.
Nesta seção
Como Adicionar Controles ao Windows Forms
Fornece instruções para anexar controles ao formulário.
Como adicionar controles sem uma interface do usuário aos Windows Forms
Fornece instruções para acrescentar controles sem interface do usuário para seu
aplicativo.
Seções relacionadas
controles Windows Forms
Fornece links para tópicos introdutórios sobre controles e o que você pode fazer com
eles.
3. No formulário, clique onde você deseja que o canto superior esquerdo do controle
se localize e arraste até onde você deseja posicionar o canto inferior direito do
controle.
7 Observação
7 Observação
C#
7 Observação
) Importante
Você poderia expor seu computador local a um risco de segurança por meio
da rede referenciando um UserControl mal-intencionado. Isso seria um
problemas apenas no caso de uma pessoa mal-intencionada criar um controle
personalizado prejudicial e você adicioná-lo por engano ao seu projeto.
Confira também
controles de Windows Forms
Como redimensionar controles no Windows Forms
Como definir o texto exibido por um controle dos Windows Forms
Controles a serem usados nos Windows Forms
Como adicionar controles sem uma
interface do usuário aos Windows
Forms
Artigo • 02/06/2023
U Cuidado
C#
) Importante
Você poderia expor seu computador local a um risco de segurança por meio
da rede referenciando um UserControl mal-intencionado. Isso seria um
problemas apenas no caso de uma pessoa mal-intencionada criar um controle
personalizado prejudicial e você adicioná-lo por engano ao seu projeto.
Confira também
Controles de Windows Forms
Como Adicionar Controles ao Windows Forms
Como adicionar controles do ActiveX ao Windows Forms
Colocando controles nos Windows Forms
Identificando controles dos Windows Forms individuais e fornecendo atalhos para
eles
Controles a serem usados nos Windows Forms
Controles dos Windows Forms por função
Como: Adicionar a ou remover de uma
coleção de controles em tempo de
execução
Artigo • 02/06/2023
7 Observação
O exemplo de código a seguir mostra como criar uma instância do Button controle
. Ele requer um formulário com um Panel controle e que o método de manipulação
de eventos para o botão que está sendo criado, NewPanelButton_Click , já existe.
C#
3. Chame o Dispose método para liberar todos os recursos usados pelo controle .
C#
Confira também
Panel
Controle do painel
Passo a passo: Preencher de forma
automática a caixa de ferramentas com
componentes personalizados
Artigo • 02/06/2023
IComponentImplementa;
7 Observação
Criar o projeto
1. No Visual Studio, crie um projeto de aplicativo baseado no Windows chamado
ToolboxExample (File>New>Project>Visual C# ou Visual Basic>Classic
Desktop>Windows Forms Application).
Para obter mais informações, consulte Como adicionar novos itens de projeto.
3. Compile o projeto.
7 Observação
Próximas etapas
Este passo a passo demonstra que a Caixa de Ferramentas leva em conta componentes
do projeto, mas a Caixa de Ferramentas também leva em os controles. Experimente
seus próprios controles personalizados adicionando e removendo projetos de controle
de sua solução.
Confira também
Geral, Designer de Formulários do Windows, Caixa de Diálogo Opções
Como manipular guias da caixa de ferramentas
Caixa de diálogo Escolher Itens da Caixa de Ferramentas (Visual Studio)
Colocando controles nos Windows Forms
Como adicionar controles ActiveX aos
Windows Forms
Artigo • 02/06/2023
Embora o Designer de Windows Forms no Visual Studio seja otimizado para hospedar
controles Windows Forms, você também pode colocar controles ActiveX em Windows
Forms.
U Cuidado
Antes de adicionar controles ActiveX ao seu formulário, você deve adicioná-los à caixa
de ferramentas. Para obter mais informações, consulte Componentes COM, Caixa de
diálogo Personalizar caixa de ferramentas.
O Visual Studio adiciona todas as referências ao controle em seu projeto. Para obter
mais informações sobre as coisas para ter em mente ao usar controles ActiveX nos
Windows Forms, consulte Considerações sobre quando hospedar um controle ActiveX
em um Windows Form.
7 Observação
essa irregularidade não impede que o código funcione normalmente. Para obter
detalhes, consulte Importador de Controle ActiveX dos Windows Forms
(Aximp.exe).
Confira também
controles Windows Forms
Controles e objetos programáveis comparados em diversas linguagens e
bibliotecas
Como Adicionar Controles ao Windows Forms
Identificando controles dos Windows Forms individuais e fornecendo atalhos para
eles
Controles a serem usados nos Windows Forms
Controles dos Windows Forms por função
Considerações sobre quando hospedar
um controle ActiveX em um Windows
Form
Artigo • 02/06/2023
Embora o Windows Forms tenha sido otimizada para hospedar controles dos Windows
Forms, você ainda poderá usar controles ActiveX. Lembre-se das seguintes
considerações ao planejar um aplicativo que usa os controles ActiveX:
7 Observação
7 Observação
Confira também
Como adicionar controles do ActiveX ao Windows Forms
Segurança de Acesso ao Código
Controles e objetos programáveis comparados em diversas linguagens e
bibliotecas
Colocando controles nos Windows Forms
Controles de Windows Forms
Rotular controles Windows Forms
individuais e fornecer atalhos
Artigo • 02/06/2023
Nesta seção
Como definir o texto exibido por um controle dos Windows Forms
Descreve como atribuir um rótulo de texto a um controle.
Seções relacionadas
Controles de Windows Forms
Links para outras coisas básicas que você pode fazer com controles.
Como criar chaves de acesso para
controles de Windows Forms
Artigo • 02/06/2023
Os controles que não podem receber o foco não podem ter chaves de acesso.
Programático
Defina a Text propriedade como uma cadeia de caracteres que inclui uma ampersand
(&) antes da letra que será o atalho.
C#
7 Observação
Para usar uma ampersand em uma legenda sem criar uma chave de acesso, inclua
duas escarpas (&&). Uma única ampersand é exibida na legenda e nenhum
caractere é sublinhado.
Designer
Na janela Propriedades do Visual Studio, defina a propriedade Text como uma cadeia
de caracteres que inclui uma escarpa ('&') antes da letra que será a chave de acesso. Por
exemplo, para definir a letra "P" como a chave de acesso, insira &Imprimir.
Confira também
Button
Como responder a cliques no botão dos Windows Forms
Como definir o texto exibido por um controle dos Windows Forms
Identificando controles dos Windows Forms individuais e fornecendo atalhos para
eles
Como definir o texto exibido por um
controle Windows Forms
Artigo • 02/06/2023
Programático
1. Defina a Text propriedade como uma cadeia de caracteres.
Para criar uma chave de acesso sublinhada, inclui um escarp (&) antes da letra que
será a chave de acesso.
C#
7 Observação
Você pode usar um caractere de escape para exibir um caractere especial nos
elementos de interface do usuário que seriam normalmente interpretados de
maneira diferente, como itens de menu. Por exemplo, a seguinte linha de
código define o texto do item de menu para ler "& Now For Something
Completely Different":
C#
Para criar uma tecla de atalho sublinhada, inclui um escarp (&) antes da letra que
será a tecla de atalho.
Confira também
Control.Text
Como criar teclas de acesso para controles dos Windows Forms
Como responder a cliques no botão dos Windows Forms
Como definir a imagem exibida por um
controle Windows Forms
Artigo • 02/06/2023
Vários controles de Windows Forms podem exibir imagens. Essas imagens podem ser
ícones que esclarecem a finalidade do controle, como um ícone de diskette em um
botão que indica o comando Salvar. Como alternativa, os ícones podem ser imagens em
segundo plano para dar ao controle a aparência e o comportamento desejados.
Programático
Defina a propriedade ou BackgroundImage o Image controle como um objeto do
tipoImage. Em geral, você carregará a imagem de um arquivo usando o FromFile
método.
C#
Designer
1. Na janela Propriedades do Visual Studio, selecione a propriedade Image ou
BackgroundImage do controle e selecione as reticências ( ) para exibir a caixa de
diálogo Selecionar Recurso .
AccessibilityObject
AccessibleDefaultActionDescription
AccessibleDescription
AccessibleName
AccessibleRole
Propriedade AccessibilityObject
Essa propriedade somente leitura contém uma AccessibleObject instância. O
AccessibleObject implementa a IAccessible interface, que fornece informações sobre a
descrição do controle, o local da tela, as habilidades de navegação e o valor do controle.
O designer define esse valor quando o controle é adicionado ao formulário.
Propriedade
AccessibleDefaultActionDescription
Essa cadeia de caracteres descreve as ações do controle. Ela não aparece na janela
Propriedades e só pode ser definido no código. O exemplo a seguir define essa
propriedade para um controle de botão:
C#
Button1.AccessibleDefaultActionDescription =
"Closes the application.";
Propriedade AccessibleDescription
Essa cadeia de caracteres descreve o controle. Ele pode ser definido na janela
Propriedades ou no código da seguinte maneira:
C#
Propriedade AccessibleName
Esse é o nome de um controle relatado para os recursos de acessibilidade. Ele pode ser
definido na janela Propriedades ou no código da seguinte maneira:
C#
Button1.AccessibleName = "Order";
Propriedade AccessibleRole
Essa propriedade, que contém uma AccessibleRole enumeração, descreve a função de
interface do usuário do controle. Um novo controle tem o valor definido como Default .
Isso significa que, por padrão, um controle Botão atua como um Botão. Pode ser útil
redefinir essa propriedade se um controle tiver outra função. Por exemplo, você pode
estar usando um controle PictureBox como um Gráfico e pode desejar que os recursos
de acessibilidade relatem a função como um Gráfico, não como PictureBox. Também
pode ser útil especificar essa propriedade para controles personalizados desenvolvidos
por você. Essa propriedade pode ser definida na janela Propriedades ou no código da
seguinte maneira:
C#
PictureBox1.AccessibleRole = AccessibleRole.Chart;
Confira também
AccessibleObject
Control.AccessibilityObject
Control.AccessibleDefaultActionDescription
Control.AccessibleDescription
Control.AccessibleName
Control.AccessibleRole
AccessibleRole
Controles a serem usados nos Windows
Forms
Artigo • 02/06/2023
Esta é uma lista alfabética de controles e componentes que podem ser usados nos
Windows Forms. Além dos controles dos Windows Forms abordados nesta seção, você
pode adicionar ActiveX e controles personalizados ao Windows Forms. Se não encontrar
o controle necessário listado aqui, você poderá criar seus próprios. Para mais detalhes,
consulte Desenvolvendo controles dos Windows Forms no tempo de design. Para mais
informações sobre como escolher o controle necessário, consulte Controles dos
Windows Forms por função.
7 Observação
Visual Basic controles são baseados em classes fornecidas pelo .NET Framework.
Nesta seção
Controles dos Windows Forms por função
Lista e descreve os Windows Forms baseados no .NET Framework.
Componente BackgroundWorker
Permite que um formulário ou controle execute uma operação assíncrona.
Controle BindingNavigator
Fornece interface do usuário de navegação e manipulação para controles associados a
dados.
Componente BindingSource
Encapsula uma fonte de dados para associação aos controles.
Controle de botão
Apresenta um botão padrão que o usuário pode clicar para executar ações.
Controle CheckBox
Indica se uma condição é ativada ou desativada.
Controle CheckedListBox
Exibe uma lista de itens com uma caixa de seleção perto de cada item.
Componente ColorDialog
Permite que o usuário escolha uma cor de uma paleta em uma caixa de diálogo pré-
configurada e adicione cores personalizadas a essa paleta.
Controle ComboBox
Exibe dados em uma caixa de combinação suspensa.
Componente ContextMenu
Fornece aos usuários um menu facilmente acessível dos comandos usados com
frequência que são associados ao objeto selecionado. Embora ContextMenuStrip
substitua e adiciona funcionalidade ao ContextMenu controle de versões anteriores,
ContextMenu é mantido para compatibilidade com versões anteriores e uso futuro, se
assim desejar.
Controle ContextMenuStrip
Representa um menu de atalho. Embora ContextMenuStrip substitua e adiciona
funcionalidade ao ContextMenu controle de versões anteriores, ContextMenu é mantido
para compatibilidade com versões anteriores e uso futuro, se assim desejar.
Controle DataGrid
Exibe dados tabulares de um conjunto de dados e permite atualizações para a fonte de
dados.
Controle DataGridView
Fornece um sistema flexível e extensível para exibir e editar dados tabulares.
Controle DateTimePicker
Permite que o usuário selecione um único item de uma lista de datas ou horas.
Controle DomainUpDown
Exibe as cadeias de caracteres de texto que um usuário pode procurar e selecionar.
Componente ErrorProvider
Exibe informações de erro para o usuário de forma não intrusiva.
Componente FolderBrowserDialog
Exibe uma interface com a qual os usuários podem procurar e selecionar um diretório
ou criar um novo.
Componente FontDialog
Expõe as fontes atualmente instaladas no sistema.
Controle GroupBox
Fornece um agrupamento de identificação para outros controles.
Componente HelpProvider
Associa um arquivo de Ajuda em HTML com um aplicativo baseado em Windows.
Componente ImageList
Exibe imagens em outros controles.
Controle de rótulo
Exibe o texto que não pode ser editado pelo usuário.
Controle LinkLabel
Permite que você adicione links no estilo Web para aplicativos dos Windows Forms.
Controle ListBox
Permite que o usuário selecione um ou mais itens de uma lista predefinida.
Controle ListView
Exibe uma lista de itens com ícones, da maneira do Windows Explorer.
Componente MainMenu
Exibe um menu no tempo de execução. Embora MenuStrip substitua e adicione
funcionalidade ao controle MainMenu de versões anteriores, MainMenu é mantido para
compatibilidade com versões anteriores e uso futuro, se desejado.
Controle MaskedTextBox
Restringe o formato da entrada de usuário em um formulário.
Controle MenuStrip
Fornece um sistema de menus para um formulário. Embora MenuStrip substitua e
adicione funcionalidade ao controle MainMenu de versões anteriores, MainMenu é
mantido para compatibilidade com versões anteriores e uso futuro, se desejado.
Controle MonthCalendar
Apresenta uma interface gráfica intuitiva para os usuários exibirem e definirem as
informações de data.
Componente NotifyIcon
Exibe ícones para processos que são executados em segundo plano e não teriam
interfaces do usuário.
Controle NumericUpDown
Exibe os números que um usuário pode procurar e selecionar.
Componente OpenFileDialog
Permite aos usuários abrir arquivos por meio de uma caixa de diálogo pré-configurada.
Componente PageSetupDialog
Define detalhes de páginas para impressão por meio de uma caixa de diálogo pré-
configurada.
Controle do painel
Fornece um agrupamento de identificação para outros controles e permite a rolagem.
Controle PictureBox
Exibe gráficos em formato de bitmap, GIF, JPEG, metarquivo ou ícone.
Componente PrintDialog
Seleciona uma impressora, escolhe as páginas a serem impressas e determina as outras
configurações relacionadas à impressão.
Componente PrintDocument
Define as propriedades que descrevem o que imprimir e imprime o documento em
aplicativos baseados no Windows.
Controle PrintPreviewControl
Permite que você crie seus próprios PrintPreview componentes ou caixa de diálogo em
vez de usar a versão previamente configurada.
Controle PrintPreviewDialog
Exibe um documento como ele aparecerá quando for impresso.
Controle ProgressBar
Indica o andamento de uma ação em relação à conclusão graficamente.
Controle RadioButton
Apresenta um conjunto de duas ou mais opções mutuamente exclusivas para o usuário.
Controle RichTextBox
Permite aos usuários inserir, exibir e manipular texto com formatação.
Componente SaveFileDialog
Seleciona os arquivos a serem salvos e onde salvá-los.
Classe SoundPlayer Permite que você inclua facilmente sons em seus aplicativos.
Controle SplitContainer
Permite que o usuário redimensione um controle encaixado.
Controle Divisor
Permite que o usuário resize um controle encaixado (.NET Framework versão 1.x).
Controle StatusBar
Exibe informações de status relacionadas ao controle que tem o foco. Embora o
StatusStrip substitua e estenda o controle StatusBar de versões anteriores, StatusBar é
mantido para compatibilidade com versões anteriores e uso futuro, se desejado.
Controle StatusStrip
Representa um controle de barra de status do Windows. Embora o StatusStrip substitua
e estenda o controle StatusBar de versões anteriores, StatusBar é mantido para
compatibilidade com versões anteriores e uso futuro, se desejado.
Controle TabControl
Exibe várias guias que podem conter imagens ou outros controles.
Controle TableLayoutPanel
Representa um painel que dispõe de forma dinâmica o conteúdo em uma grade
composta por linhas e colunas.
Controle TextBox
Permite entrada editável de várias linhas do usuário.
Componente de Temporizador
Gera um evento em intervalos regulares.
Controle ToolBar
Exibe os menus e botões de bitmap que ativam comandos. Você pode estender a
funcionalidade do controle e modificar sua aparência e comportamento. Embora
ToolStrip substitua e adicione funcionalidade ao controle ToolBar de versões anteriores,
ToolBar é mantido para compatibilidade com versões anteriores e uso futuro, se
desejado.
Controle ToolStrip
Cria menus e barras de ferramentas personalizadas em seus aplicativos dos Windows
Forms. Embora ToolStrip substitua e adicione funcionalidade ao controle ToolBar de
versões anteriores, ToolBar é mantido para compatibilidade com versões anteriores e
uso futuro, se desejado.
Controle ToolStripContainer
Fornece painéis em cada lado de um formulário para encaixar, ToolStrip reacoplar e
organizar controles e um central ToolStripContentPanel para controles tradicionais.
Controle ToolStripPanel
Fornece um painel para encaixar, reacoplar e organizar controles ToolStrip .
Controle ToolStripStatusLabel
Representa um painel em um controle StatusStrip.
Componente ToolTip
Exibe o texto quando o usuário aponta para outros controles.
Controle TrackBar
Permite a navegação por meio de uma grande quantidade de informações ou ajuste
visual de uma configuração numérica.
Controle TreeView
Exibe uma hierarquia de nós que podem ser expandidos ou recolhidos.
Controle WebBrowser
Hospeda páginas da Web e fornece recursos de navegação na Internet para seu
aplicativo.
Seções relacionadas
controles Windows Forms
Explica o uso de controles dos Windows Forms e descreve conceitos importantes para
trabalhar com eles.
7 Observação
As tabelas a seguir não listam todos os controles ou componentes que você pode
usar nos Windows Forms. Para obter uma lista mais abrangente, consulte Controles
a serem usados nos Windows Forms
Edição de texto Controle TextBox Exibe o texto inserido em tempo de design que pode
ser editado por usuários em tempo de execução ou ser
modificado programaticamente.
Função Control Descrição
Exibição de Controle Label Exibe o texto que os usuários não podem editar
informações diretamente.
(somente
leitura)
Seleção de uma Controle Exibe uma lista rolável de itens, cada um deles
lista CheckedListBox acompanhado por uma caixa de seleção.
componente ToolTip Fornece uma janela pop-up que exibe uma breve
descrição da finalidade do controle quando o usuário
deixa o ponteiro sobre o controle.
MainMenu MenuStrip
StatusBar StatusStrip
Confira também
Controles a serem usados nos Windows Forms
Desenvolvendo controles dos Windows Forms personalizados com o .NET
Framework
Controles com suporte de desenho do
proprietário interno
Artigo • 02/06/2023
Proprietário do desenho nos Windows Forms, que é também conhecido como desenho
personalizado, é uma técnica para alterar a aparência visual de certos controles.
7 Observação
A palavra "controle" neste tópico é usada para significar classes que derivam de um
Control ou Component.
A maioria dos controles têm de desenho do proprietário que suporte uma propriedade
OwnerDraw ou DrawMode que indica se o controle será aumentará seu evento ou eventos
da classe base On EventName nesse caso, para que os usuários de seu controle possam
manipular eventos de desenho do proprietário e fornecer personalização adicional.
ListBox
ComboBox
TabControl
ToolTip
ListView
TreeView
Os controles a seguir dão suporte ao desenho do proprietário e são novos no .NET
Framework 2.0:
DataGridView
ToolStrip
7 Observação
Para desenhar cada item do mesmo tamanho, defina a DrawMode propriedade como
OwnerDrawFixed e manipule o DrawItem evento.
Para desenhar cada item usando um tamanho diferente, defina a DrawMode propriedade
OwnerDrawVariable como e manipule os eventos e DrawItem os MeasureItem eventos. O
evento MeasureItem permite indicar o tamanho de um item antes do evento DrawItem
ocorrer para aquele item.
ListBox.DrawMode
ListBox.MeasureItem
ListBox.DrawItem
ComboBox.DrawMode
ComboBox.MeasureItem
ComboBox.DrawItem
Para desenhar um MenuItem, defina sua OwnerDraw propriedade e true manipule seu
DrawItem evento. Para personalizar o tamanho do item de menu antes do evento
DrawItem ocorrer, identifique os eventos MeasureItem do item.
MenuItem.OwnerDraw
MenuItem.DrawItem
MenuItem.MeasureItem
Controle TabControl
O TabControl controle permite desenhar guias individuais no controle. O desenho do
proprietário afeta apenas as guias; o TabPage conteúdo não é afetado.
TabControl.DrawMode
TabControl.DrawItem
Componente ToolTip
O ToolTip componente permite que você desenhe toda a Dica de Ferramenta quando
ela é exibida.
Para desenhar um ToolTip, defina sua OwnerDraw propriedade e true manipule seu Draw
evento. Para personalizar o tamanho do antes Draw do ToolTip evento ocorrer, manipule
o Popup evento e defina a ToolTipSize propriedade no manipulador de eventos.
Para obter mais informações, incluindo exemplos de código, consulte os seguintes
tópicos de referência:
ToolTip.OwnerDraw
ToolTip.Draw
ToolTip.Popup
Controle ListView
O ListView controle permite que você desenhe itens individuais, subitens e cabeçalhos
de coluna no controle.
ListView.OwnerDraw
ListView.DrawItem
ListView.DrawSubItem
ListView.DrawColumnHeader
Controle TreeView
O TreeView controle permite que você desenhe nós individuais no controle.
Para desenhar apenas o texto exibido em cada nó, defina a DrawMode propriedade
OwnerDrawText e manipule o DrawNode evento para desenhar o texto.
TreeView.DrawMode
TreeView.DrawNode
Controle DataGridView
O DataGridView controle permite que você desenhe células e linhas individuais no
controle.
CellPainting
RowPrePaint
RowPostPaint
Controle ToolStrip
ToolStrip e controles derivados permitem que você personalize qualquer aspecto de sua
aparência.
Para fornecer renderização personalizada para ToolStrip controles, defina a Renderer
propriedade de umToolStrip, ToolStripManagerToolStripPanelou ToolStripContentPanel
para um ToolStripRenderer objeto e manipule um ou mais dos muitos eventos de
desenho fornecidos pela ToolStripRenderer classe. Como alternativa, defina uma
Renderer propriedade como uma instância de sua própria classe derivada de
ToolStripRenderer
Confira também
Controles a serem usados nos Windows Forms
Componente BackgroundWorker
Artigo • 02/06/2023
Nesta seção
Visão geral do componente BackgroundWorker
Descreve o componente BackgroundWorker , que permite executar operações demoradas
de forma assíncrona ("no segundo plano"), em um thread diferente do thread principal
da interface do usuário do aplicativo.
Passo a passo: Implementando um formulário que usa uma operação em segundo plano
Cria um aplicativo usando o designer que faz cálculos matemáticos de forma assíncrona.
Referência
BackgroundWorker
Descreve essa classe e tem links para todos os seus membros.
RunWorkerCompletedEventArgs
Descreve o tipo que contém dados para o RunWorkerCompleted evento.
ProgressChangedEventArgs
Descreve o tipo que contém dados para o ProgressChanged evento.
Seções relacionadas
Visão geral do padrão assíncrono baseado em evento
Descreve como o padrão assíncrono disponibiliza as vantagens de aplicativos de vários
threads enquanto oculta muitos problemas complexos inerentes ao design com vários
threads.
Visão geral do componente
BackgroundWorker
Artigo • 02/06/2023
Há muitas operações realizadas com frequência que podem levar muito tempo para
serem executadas. Por exemplo:
Downloads de imagens
Operações como essas podem fazer com que a interface do usuário seja bloqueada
durante a execução. Se você quer uma interface que responda com agilidade e está
enfrentando longos atrasos associados a essas operações, o componente
BackgroundWorker fornece uma solução conveniente.
C#
U Cuidado
Para obter mais informações sobre como usar a BackgroundWorker classe, consulte
Como executar uma operação em segundo plano.
Confira também
Threading gerenciado
Visão geral do padrão assíncrono baseado em evento
Como: Implementar um formulário que usa uma operação em segundo plano
Como: Executar uma operação em
segundo plano
Artigo • 02/06/2023
Se você tiver uma operação que levará muito tempo para ser concluída e não quiser
causar atrasos na interface do usuário, poderá usar a BackgroundWorker classe para
executar a operação em outro thread.
Exemplo
C#
using System;
using System.ComponentModel;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
namespace BackgroundWorkerExample
{
public class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
while (!bw.CancellationPending)
{
bool exit = false;
switch (rand.Next(3))
{
// Raise an exception.
case 0:
{
throw new Exception("An error condition occurred.");
break;
}
default:
{
break;
}
}
if( exit )
{
break;
}
}
return result;
}
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be
disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.backgroundWorker1 = new
System.ComponentModel.BackgroundWorker();
this.startBtn = new System.Windows.Forms.Button();
this.cancelBtn = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// backgroundWorker1
//
this.backgroundWorker1.WorkerSupportsCancellation = true;
this.backgroundWorker1.DoWork += new
System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
this.backgroundWorker1.RunWorkerCompleted += new
System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_
RunWorkerCompleted);
//
// startBtn
//
this.startBtn.Location = new System.Drawing.Point(12, 12);
this.startBtn.Name = "startBtn";
this.startBtn.Size = new System.Drawing.Size(75, 23);
this.startBtn.TabIndex = 0;
this.startBtn.Text = "Start";
this.startBtn.Click += new
System.EventHandler(this.startBtn_Click);
//
// cancelBtn
//
this.cancelBtn.Location = new System.Drawing.Point(94, 11);
this.cancelBtn.Name = "cancelBtn";
this.cancelBtn.Size = new System.Drawing.Size(75, 23);
this.cancelBtn.TabIndex = 1;
this.cancelBtn.Text = "Cancel";
this.cancelBtn.Click += new
System.EventHandler(this.cancelBtn_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(183, 49);
this.Controls.Add(this.cancelBtn);
this.Controls.Add(this.startBtn);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
}
Compilando o código
Este exemplo requer:
Confira também
BackgroundWorker
DoWorkEventArgs
Como: Implementar um formulário que usa uma operação em segundo plano
Componente BackgroundWorker
Como: Como baixar um arquivo em
segundo plano
Artigo • 21/06/2023
Baixar um arquivo é uma tarefa comum e costuma ser útil executar esta operação
potencialmente demorada em um thread separado. Use o BackgroundWorker
componente para realizar essa tarefa com muito pouco código.
Exemplo
O exemplo de código a seguir demonstra como usar um BackgroundWorker
componente para carregar um arquivo XML de uma URL. Quando o usuário clica no
botão Baixar , o Click manipulador de eventos chama o RunWorkerAsync método de um
BackgroundWorker componente para iniciar a operação de download. O botão é
desabilitado durante o download e então habilitado quando o download for concluído.
Um MessageBox exibe o conteúdo do arquivo.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
using System.Xml;
public Form1()
{
InitializeComponent();
while (this.backgroundWorker1.IsBusy)
{
progressBar1.Increment(1);
// Keep UI messages moving, so the form remains
// responsive during the asynchronous operation.
Application.DoEvents();
}
}
if (e.Error == null)
{
MessageBox.Show(document.InnerXml, "Download Complete");
}
else
{
MessageBox.Show(
"Failed to download file",
"Download failed",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be
disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support
/// </summary>
private void InitializeComponent()
{
this.downloadButton = new System.Windows.Forms.Button();
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.SuspendLayout();
//
// downloadButton
//
this.downloadButton.Location = new System.Drawing.Point(12, 12);
this.downloadButton.Name = "downloadButton";
this.downloadButton.Size = new System.Drawing.Size(100, 23);
this.downloadButton.TabIndex = 0;
this.downloadButton.Text = "Download file";
this.downloadButton.UseVisualStyleBackColor = true;
this.downloadButton.Click += new
System.EventHandler(this.downloadButton_Click);
//
// progressBar1
//
this.progressBar1.Location = new System.Drawing.Point(12, 50);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(100, 26);
this.progressBar1.TabIndex = 1;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(133, 104);
this.Controls.Add(this.progressBar1);
this.Controls.Add(this.downloadButton);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
}
Baixando o arquivo
C#
Se você só deseja que o aplicativo responda a eventos e não quer realizar trabalhos no
thread principal enquanto aguarda o thread em segundo plano concluir, basta sair do
manipulador.
Se você quiser continuar trabalhando no thread main, use a IsBusy propriedade para
determinar se o BackgroundWorker thread ainda está em execução. No exemplo, uma
barra de progresso é atualizada enquanto o download é processado. Certifique-se de
chamar o Application.DoEvents método para manter a interface do usuário responsiva.
C#
while (this.backgroundWorker1.IsBusy)
{
progressBar1.Increment(1);
// Keep UI messages moving, so the form remains
// responsive during the asynchronous operation.
Application.DoEvents();
}
}
Exibindo o resultado
C#
if (e.Error == null)
{
MessageBox.Show(document.InnerXml, "Download Complete");
}
else
{
MessageBox.Show(
"Failed to download file",
"Download failed",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
Compilando o código
Este exemplo requer:
Programação robusta
Sempre marcar a AsyncCompletedEventArgs.Error propriedade no
RunWorkerCompleted manipulador de eventos antes de tentar acessar a
RunWorkerCompletedEventArgs.Result propriedade ou qualquer outro objeto que
possa ter sido afetado pelo DoWork manipulador de eventos.
Confira também
BackgroundWorker
Como: Executar uma operação em segundo plano
Como: Implementar um formulário que usa uma operação em segundo plano
Como: Implementar um formulário que
usa uma operação em segundo plano
Artigo • 02/06/2023
Exemplo
C#
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
namespace BackgroundWorkerExample
{
public class FibonacciForm : System.Windows.Forms.Form
{
private int numberToCompute = 0;
private int highestPercentageReached = 0;
public FibonacciForm()
{
InitializeComponent();
InitializeBackgroundWorker();
}
long result = 0;
if (worker.CancellationPending)
{
e.Cancel = true;
}
else
{
if (n < 2)
{
result = 1;
}
else
{
result = ComputeFibonacci(n - 1, worker, e) +
ComputeFibonacci(n - 2, worker, e);
}
return result;
}
#region Windows Form Designer generated code
[STAThread]
static void Main()
{
Application.Run(new FibonacciForm());
}
}
}
Compilando o código
Este exemplo requer:
Programação robusta
U Cuidado
Confira também
BackgroundWorker
DoWorkEventArgs
Visão geral do padrão assíncrono baseado em evento
Práticas recomendadas de threading gerenciado
Passo a passo: Executando uma
operação em segundo plano
Artigo • 21/06/2023
Se você tiver uma operação que levará muito tempo para ser concluída e não quiser
causar atrasos na interface do usuário, poderá usar a BackgroundWorker classe para
executar a operação em outro thread.
Para obter uma listagem completa do código usado neste exemplo, consulte Como
executar uma operação em segundo plano.
4. Na janela Propriedades , clique no botão Eventos e clique duas vezes nos DoWork
eventos e RunWorkerCompleted para criar manipuladores de eventos.
C#
C#
while (!bw.CancellationPending)
{
bool exit = false;
switch (rand.Next(3))
{
// Raise an exception.
case 0:
{
throw new Exception("An error condition occurred.");
break;
}
default:
{
break;
}
}
if( exit )
{
break;
}
}
return result;
}
10. No Windows Forms Designer, clique startButton duas vezes para criar o Click
manipulador de eventos.
C#
12. No Windows Forms Designer, clique cancelButton duas vezes para criar o Click
manipulador de eventos.
C#
C#
using System;
using System.ComponentModel;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
15. Pressione F6 para criar a solução e pressione Ctrl+F5 para executar o aplicativo
fora do depurador.
7 Observação
16. Clique no botão Iniciar para executar uma operação assíncrona e, em seguida, no
botão Cancelar para interromper uma operação assíncrona em execução.
Próximas etapas
Implemente um formulário que relata o andamento à medida que uma operação
assíncrona prossegue. Para obter mais informações, consulte Como implementar
um formulário que usa uma operação em segundo plano.
Confira também
BackgroundWorker
DoWorkEventArgs
Como: Implementar um formulário que usa uma operação em segundo plano
Como: Executar uma operação em segundo plano
Componente BackgroundWorker
Passo a passo: Implementando um
formulário que usa uma operação em
segundo plano
Artigo • 02/06/2023
Se você tiver uma operação que levará muito tempo para ser concluída e não quiser que
a interface do usuário (interface do usuário) pare de responder ou bloqueie, você
poderá usar a BackgroundWorker classe para executar a operação em outro thread.
Este passo a passo ilustra como usar a BackgroundWorker classe para executar cálculos
demorados "em segundo plano", enquanto a interface do usuário permanece
responsiva. Quando terminar, você terá um aplicativo que calcula números de Fibonacci
de forma assíncrona. Embora o cálculo de um número de Fibonacci grande possa levar
um tempo considerável, o thread de interface do usuário principal não será
interrompido por esse atraso e o formulário será responsivo durante o cálculo.
Para obter uma listagem completa do código usado neste exemplo, consulte Como
implementar um formulário que usa uma operação em segundo plano.
C#
// This is the method that does the actual work. For this
// example, it computes a Fibonacci number and
// reports progress as it does its work.
long ComputeFibonacci(int n, BackgroundWorker worker, DoWorkEventArgs
e)
{
// The parameter n must be >= 0 and <= 91.
// Fib(n), with n > 91, overflows a long.
if ((n < 0) || (n > 91))
{
throw new ArgumentException(
"value must be >= 0 and <= 91", "n");
}
long result = 0;
if (worker.CancellationPending)
{
e.Cancel = true;
}
else
{
if (n < 2)
{
result = 1;
}
else
{
result = ComputeFibonacci(n - 1, worker, e) +
ComputeFibonacci(n - 2, worker, e);
}
return result;
}
7 Observação
C#
C#
C#
C#
private int numberToCompute = 0;
private int highestPercentageReached = 0;
C#
C#
C#
if (worker.CancellationPending)
{
e.Cancel = true;
}
C#
// Report progress as a percentage of the total task.
int percentComplete =
(int)((float)n / (float)numberToCompute * 100);
if (percentComplete > highestPercentageReached)
{
highestPercentageReached = percentComplete;
worker.ReportProgress(percentComplete);
}
Ponto de verificação
Neste ponto, você pode compilar e executar o aplicativo Calculadora Fibonacci.
Para números pequenos, o cálculo deve ser muito rápido, mas, para números maiores,
você deve ver um atraso considerável. Se inserir um valor de 30 ou mais, você deverá
ver um atraso de alguns segundos, dependendo da velocidade do seu computador. Para
valores maiores que 40, poderá levar minutos ou horas para concluir o cálculo.
Enquanto a calculadora estiver ocupada calculando um número de Fibonacci grande,
observe que você pode movimentar livremente o formulário, minimizar, maximizar e até
mesmo descartá-lo. Isso ocorre porque o thread da interface do usuário principal não
está aguardando concluir o cálculo.
Próximas etapas
Agora que você implementou um formulário que usa um BackgroundWorker
componente para executar uma computação em segundo plano, você pode explorar
outras possibilidades para operações assíncronas:
Para depurar seu aplicativo multi-threaded, consulte Como usar a janela Threads.
Confira também
System.ComponentModel.BackgroundWorker
Threading gerenciado
Práticas recomendadas de threading gerenciado
Visão geral do padrão assíncrono baseado em evento
Como: Implementar um formulário que usa uma operação em segundo plano
Passo a passo: Executando uma operação em segundo plano
Componente BackgroundWorker
Controle BindingNavigator (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do controle BindingNavigator
Apresenta os conceitos gerais do controle, que BindingNavigator permite que os
usuários passem pelos itens de uma fonte de dados.
Referência
BindingNavigator
Fornece a documentação de referência para o BindingNavigator controle.
BindingSource
Fornece a documentação de referência para o BindingSource controle.
Seções relacionadas
Associar controles a dados no Visual Studio
Visão geral do controle
BindingNavigator (Windows Forms)
Artigo • 02/06/2023
Você pode usar o BindingNavigator controle para criar um meio padronizado para que
os usuários pesquisem e alterem dados em um Formulário do Windows. Você usa
BindingNavigator com frequência com o BindingSource componente para permitir que
os usuários se movam por meio de registros de dados em um formulário e interajam
com os registros.
Control Função
Caixa de texto CountItem Retorna o número total de itens na fonte de dados subjacente.
Se os botões padrão não forem adequados para seu aplicativo ou se você precisar de
botões adicionais para dar suporte a outros tipos de funcionalidade, poderá fornecer
seus próprios ToolStrip botões. Consulte também Como adicionar botões Carregar,
Salvar e Cancelar ao controle BindingNavigator do Windows Forms.
Confira também
BindingNavigator
BindingSource
Controle BindingNavigator
Como: Navegar em dados com o
controle BindingNavigator do Windows
Forms
Artigo • 21/06/2023
C#
// Convert the xml string to bytes and load into a memory stream.
byte[] xmlBytes = Encoding.UTF8.GetBytes(xml);
MemoryStream stream = new MemoryStream(xmlBytes, false);
código.
C#
bindingNavigator1.BindingSource = bindingSource1;
Exemplo
O exemplo de código a seguir é o exemplo completo para as etapas listadas
anteriormente.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Xml;
using System.IO;
using System.Text;
namespace System.Windows.Forms.BindingSourceCurrent
{
class Form1 : Form
{
private IContainer components;
private BindingNavigator bindingNavigator1;
private ToolStripButton bindingNavigatorAddNewItem;
private ToolStripLabel bindingNavigatorCountItem;
private ToolStripButton bindingNavigatorDeleteItem;
private ToolStripButton bindingNavigatorMoveFirstItem;
private ToolStripButton bindingNavigatorMovePreviousItem;
private ToolStripSeparator bindingNavigatorSeparator;
private ToolStripTextBox bindingNavigatorPositionItem;
private ToolStripSeparator bindingNavigatorSeparator1;
private ToolStripButton bindingNavigatorMoveNextItem;
private ToolStripButton bindingNavigatorMoveLastItem;
private TextBox textBox1;
private TextBox textBox2;
private BindingSource bindingSource1;
private ToolStripSeparator bindingNavigatorSeparator2;
public Form1()
{
InitializeComponent();
LoadData();
bindingNavigator1.BindingSource = bindingSource1;
}
private void LoadData()
{
// The xml to bind to.
string xml = @"<US><states>"
+ @"<state><name>Washington</name><capital>Olympia</capital>
</state>"
+ @"<state><name>Oregon</name><capital>Salem</capital>
</state>"
+ @"<state><name>California</name>
<capital>Sacramento</capital></state>"
+ @"<state><name>Nevada</name><capital>Carson City</capital>
</state>"
+ @"</states></US>";
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
// bindingNavigatorMoveNextItem
//
this.bindingNavigatorMoveNextItem.Image =
((System.Drawing.Image)
(resources.GetObject("bindingNavigatorMoveNextItem.Image")));
this.bindingNavigatorMoveNextItem.Name =
"bindingNavigatorMoveNextItem";
this.bindingNavigatorMoveNextItem.Text = "Move next";
//
// bindingNavigatorMoveLastItem
//
this.bindingNavigatorMoveLastItem.Image =
((System.Drawing.Image)
(resources.GetObject("bindingNavigatorMoveLastItem.Image")));
this.bindingNavigatorMoveLastItem.Name =
"bindingNavigatorMoveLastItem";
this.bindingNavigatorMoveLastItem.Text = "Move last";
//
// bindingNavigatorSeparator2
//
this.bindingNavigatorSeparator2.Name =
"bindingNavigatorSeparator2";
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(46, 64);
this.textBox1.Name = "textBox1";
this.textBox1.TabIndex = 3;
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(46, 104);
this.textBox2.Name = "textBox2";
this.textBox2.TabIndex = 4;
//
// Form1
//
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.bindingNavigator1);
this.Name = "Form1";
((System.ComponentModel.ISupportInitialize)
(this.bindingNavigator1)).EndInit();
this.bindingNavigator1.ResumeLayout(false);
this.bindingNavigator1.PerformLayout();
((System.ComponentModel.ISupportInitialize)
(this.bindingSource1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
}
}
Compilando o código
Este exemplo requer:
Confira também
BindingNavigator
Controle BindingNavigator
Controle ToolStrip
Como: Avançar em um DataSet com o
controle BindingNavigator do Windows
Forms
Artigo • 02/06/2023
À medida que você cria aplicativos controlados por dados, muitas vezes você precisará
exibir coleções de dados para os usuários. O BindingNavigator controle, em conjunto
com o BindingSource componente, fornece uma solução conveniente e extensível para
mover uma coleção e exibir itens sequencialmente.
Exemplo
O exemplo de código a seguir demonstra como usar um BindingNavigator controle
para mover os dados. O conjunto está contido em um DataView, que está associado a
um TextBox controle com um BindingSource componente.
7 Observação
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Data.SqlClient;
using System.Windows.Forms;
public Form1()
{
// Set up the BindingSource component.
this.customersBindingNavigator.BindingSource =
this.customersBindingSource;
this.customersBindingNavigator.Dock = DockStyle.Top;
this.Controls.Add(this.customersBindingNavigator);
SqlDataAdapter dataAdapter1 =
new SqlDataAdapter(new SqlCommand("Select * From
Customers",connection));
DataSet ds = new DataSet("Northwind Customers");
ds.Tables.Add("Customers");
dataAdapter1.Fill(ds.Tables["Customers"]);
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Compilando o código
Este exemplo requer:
Confira também
BindingSource
DataGridView
BindingSource
Controle BindingNavigator
Componente BindingSource
Como: Associar um controle do Windows Forms a um tipo
Como: Adicionar botões Carregar, Salvar
e Cancelar ao controle
BindingNavigator do Windows Forms
Artigo • 21/06/2023
d. Defina a DisplayStyle propriedade para cada um dos botões como Texto. Como
alternativa, você pode definir essa propriedade como Image ou ImageAndText
e definir a imagem para ser exibida na Image propriedade .
C#
C#
C#
7 Observação
Confira também
BindingNavigator
BindingSource
ToolStrip
Controle BindingNavigator
Visão geral do componente BindingSource
Componente BindingSource
Artigo • 02/06/2023
Em segundo lugar, o BindingSource componente pode atuar como uma fonte de dados
fortemente tipada. Adicionar um tipo ao BindingSource componente com o Add
método cria uma lista desse tipo.
Nesta seção
Visão geral do componente BindingSource
Apresenta os conceitos gerais do componente, o BindingSource que permite que você
associe uma fonte de dados a um controle.
Como: Como associar controles do Windows Forms a valores de banco de dados DBNull
Mostra como lidar com um DBNull valor da fonte de dados usando o BindingSource
componente.
Referência
BindingSource
Fornece a documentação de referência para o BindingSource componente.
BindingNavigator
Fornece a documentação de referência para o BindingNavigator controle.
Seções relacionadas
Associação de dados do Windows Forms
Contém links para tópicos que descrevem a arquitetura de associação de dados do
Windows Forms.
Arquitetura de
7 Observação
Em tempo de design, algumas ações, como arrastar uma tabela de banco de dados
de uma janela de dados para um formulário em branco, criarão o BindingSource
componente, o associarão à fonte de dados subjacente e adicionarão controles
com reconhecimento de dados em uma única operação. Confira também
Associando controles dos Windows Forms a dados no Visual Studio.
Além disso, você pode escrever código para fornecer a funcionalidade personalizada
"AddNew" por meio do AddingNew evento, que é gerado quando o AddNew método é
chamado antes do item ser adicionado à lista. Para obter mais informações, consulte
Arquitetura do componente BindingSource.
Navegação
Para usuários que precisam navegar pelos dados em um formulário, o BindingNavigator
componente permite que você navegue e manipule dados, em coordenação com um
BindingSource componente. Para obter mais informações, consulte Controle
BindingNavigator.
Manipulação de dados
O: BindingSource atua como um CurrencyManager para todas as suas associações e,
portanto, pode fornecer acesso a informações de moeda e posição sobre a fonte de
dados. A tabela a seguir mostra os membros que o BindingSource componente fornece
para acessar e manipular os dados subjacentes.
Membro Descrição
Classificando e filtrando
Normalmente, você deve trabalhar com uma exibição ordenada ou filtrada da fonte de
dados. A tabela a seguir mostra os membros que a fonte de dados do BindingSource
componente fornece.
Membro Descrição
Confira também
BindingSource
BindingNavigator
Arquitetura do componente BindingSource
Componente BindingSource
Controle BindingNavigator
associação de dados Windows Forms
Controles a serem usados nos Windows Forms
Arquitetura do componente
BindingSource
Artigo • 02/06/2023
Recursos do BindingSource
O BindingSource componente fornece vários recursos para controles de associação aos
dados. Com esses recursos, você pode implementar a maioria dos cenários de
associação de dados com quase nenhuma codificação de sua parte.
Indireção.
Gerenciamento de moeda.
IEnumerable Apoio.
Indireção
O BindingSource componente fornece um nível de indireção entre um controle e uma
fonte de dados. Em vez de associar um controle diretamente a uma fonte de dados,
você associa o controle a um BindingSourcee anexa a fonte de dados à BindingSource
propriedade do DataSource componente.
Com esse nível de indireção, você pode alterar a fonte de dados sem redefinir a
associação de controle. Isso oferece as seguintes funcionalidades:
Gerenciamento de moedas
O BindingSource componente implementa a interface para lidar com o
ICurrencyManagerProvider gerenciamento de moeda para você. Com a
ICurrencyManagerProvider interface, você também pode acessar o gerenciador de
moedas para um BindingSource, além do gerenciador de moedas para outro
BindingSource associado ao mesmo DataMember.
Propriedade CurrencyManager
Obtém o gerenciador de moedas associado ao BindingSource.
Método GetRelatedCurrencyManager
Se houver outro BindingSource limite para o membro de dados especificado, obterá seu
gerenciador de moedas.
Propriedade Current
Obtém o item atual da fonte de dados.
Propriedade Position
Obtém ou define a posição atual na lista subjacente.
Método EndEdit
Aplica as alterações pendentes à fonte de dados subjacente.
Método CancelEdit
Cancela a operação de edição atual.
A DataSource propriedade pode ser definida como várias fontes de dados. Isso inclui
tipos, objetos e listas de tipos. A fonte de dados resultante será exposta como uma lista.
A tabela a seguir mostra algumas das fontes de dados comuns e a avaliação de lista
resultante.
Uma referência nula ( Nothing no Visual Um vazio IBindingList de objetos. Adicionar um item
Basic) define a lista como o tipo do item adicionado.
Tipo fora da lista ou objeto do tipo "T" Um vazio IBindingList do tipo "T".
Instância de lista que contém o tipo "T" Uma IBindingList instância que contém o tipo "T".
Além disso, DataSource pode ser definido como outros tipos de lista, como IListSource
e ITypedList, e eles BindingSource serão tratados adequadamente. Nesse caso, o tipo
contido na lista deve ter um construtor sem parâmetros.
Membro DESCRIÇÃO
Método Adiciona um novo item à lista subjacente. Aplica-se a fontes de dados que
AddNew implementam a IBindingList interface e permitem a adição de itens (ou seja, a
AllowNew propriedade está definida como true ).
Suporte a IEnumerable
O BindingSource componente permite controles de associação a IEnumerable fontes de
dados. Com esse componente, você pode associar a uma fonte de dados, como um
System.Data.SqlClient.SqlDataReader.
para ser usada por autores de controle e terceiros nos seguintes métodos static :
GetListItemProperties
GetList.
GetListName
GetListItemType
A tabela a seguir descreve as propriedades que você pode usar para classificação e
filtragem.
Membro DESCRIÇÃO
Propriedade Se a fonte de dados for uma IBindingListView, obtém ou define a expressão usada
Filter para filtrar quais linhas são exibidas.
Membro DESCRIÇÃO
-ou-
Confira também
BindingSource
BindingNavigator
Visão geral do componente BindingSource
Controle BindingNavigator
Associação de dados do Windows Forms
Controles a serem usados nos Windows Forms
Como: Associar um controle do Windows Forms a um tipo
Como: Refletir atualizações feitas na fonte de dados em um controle do Windows
Forms com o BindingSource
Como: Associar um controle do
Windows Forms a um objeto de
alocador
Artigo • 02/06/2023
Quando você estiver criando controles que interagem com os dados, às vezes, será
necessário associar um controle a um objeto ou método que gere outros objetos. Esse
objeto ou método é chamado de alocador. A fonte de dados pode ser, por exemplo, o
valor retornado de uma chamada de método, em vez de um objeto na memória ou um
tipo. Você pode associar um controle a esse tipo de fonte de dados desde que a fonte
retorne uma coleção.
Exemplo
O exemplo a seguir demonstra como associar um DataGridView controle a um método
de fábrica usando um BindingSource controle. O método de fábrica chama-se
GetOrdersByCustomerId e retorna todos os pedidos para determinado cliente no banco
de dados Northwind.
C#
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Diagnostics;
using System.Drawing;
using System.Data.SqlClient;
using System.Windows.Forms;
public Form1()
{
// Set up the CustomerID TextBox.
this.customerIdTextBox.Location = new Point(100, 200);
this.customerIdTextBox.Size = new Size(500, 30);
this.customerIdTextBox.Text =
"Enter a valid Northwind CustomerID, for example: ALFKI," +
" then RETURN or click outside the TextBox";
this.customerIdTextBox.Leave +=
new EventHandler(customerIdTextBox_Leave);
this.customerIdTextBox.KeyDown +=
new KeyEventHandler(customerIdTextBox_KeyDown);
this.Controls.Add(this.customerIdTextBox);
connection.ConnectionString = connectString;
connection.Open();
// These event handlers are called when the user tabs or clicks
// out of the customerIdTextBox or hits the return key.
// The database is then queried with the CustomerID
// in the customerIdTextBox.Text property.
void customerIdTextBox_Leave(object sender, EventArgs e)
{
// Attach the data source to the BindingSource control.
this.ordersBindingSource.DataSource =
GetOrdersByCustomerId(this.customerIdTextBox.Text);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Compilando o código
Este exemplo requer:
Confira também
BindingNavigator
DataGridView
BindingSource
Componente BindingSource
Como: Associar um controle do Windows Forms a um tipo
Como: Associar um controle do
Windows Forms a um tipo
Artigo • 02/06/2023
Quando estiver criando controles que interagem com os dados, às vezes, achará
necessário associar um controle a um tipo, em vez de um objeto. Essa situação ocorre
especialmente em tempo de design, quando os dados podem não estar disponíveis,
mas seus controles ligados a dados ainda precisam exibir informações da interface
pública de um tipo. Por exemplo, você pode associar um DataGridView controle a um
objeto exposto por um serviço Web e desejar que o DataGridView controle rotule suas
colunas em tempo de design com os nomes de membro de um tipo personalizado.
Exemplo
O exemplo de código a seguir demonstra como associar um DataGridView controle a
um tipo personalizado usando um BindingSource componente. Ao executar o exemplo,
você observará as DataGridView colunas rotuladas que refletem as propriedades de um
Customer objeto, antes que o controle seja preenchido com dados. O exemplo tem um
botão Adicionar Cliente para adicionar dados ao DataGridView controle. Quando você
clica no botão, um novo Customer objeto é adicionado ao BindingSource. Em um
cenário do mundo real, os dados podem ser obtidos por uma chamada para um serviço
Web ou outra fonte de dados.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
public Form1()
{
this.button1 = new System.Windows.Forms.Button();
this.button1.Location = new System.Drawing.Point(140, 326);
this.button1.Name = "button1";
this.button1.AutoSize = true;
this.button1.Text = "Add Customer";
this.button1.Click += new System.EventHandler(this.button1_Click);
this.ClientSize = new System.Drawing.Size(362, 370);
this.Controls.Add(this.button1);
Compilando o código
Este exemplo requer:
Confira também
BindingNavigator
DataGridView
BindingSource
Componente BindingSource
Como: Associar um controle do
Windows Forms a um tipo usando o
Designer
Artigo • 02/06/2023
Quando estiver compilando controles que interagem com os dados, pode ser necessário
associar um controle a um tipo, em vez de um objeto. Geralmente é necessário associar
um controle a um tipo no tempo de design, quando os dados podem não estar
disponíveis, mas ainda é recomendável fazer com que os controles associados a dados
exibam dados da interface pública de um tipo. Os procedimentos a seguir demonstram
como criar um novo BindingSource associado a um tipo e, em seguida, como associar
uma das propriedades do tipo à Text propriedade de um TextBox.
-ou-
7 Observação
Confira também
Componente BindingSource
Como: Associar um controle do Windows Forms a um tipo
Associar controles a dados no Visual Studio
Como: Associar a um serviço Web
usando o BindingSource do Windows
Forms
Artigo • 02/06/2023
4. Com a ferramenta WSDL, digite wsdl e a URL do arquivo .asmx ou WSDL para o
serviço Web, seguida pelo namespace do aplicativo e, opcionalmente, o idioma de
trabalho.
http://webservices.eraserver.net.zipcoderesolver/zipcoderesolver.asmx
/n:BindToWebService /language:VB do Visual Basic. Passar o caminho como um
Geralmente, esse é um tipo retornado por um método oferecido pelo serviço Web.
Os campos do tipo escolhido devem ser expostos como propriedades públicas
para fins de associação.
C#
[System.SerializableAttribute,
System.Xml.Serialization.XmlTypeAttribute(
Namespace="http://webservices.eraserver.net/")]
public class USPSAddress
{
C#
BindingSource1.DataSource = typeof(USPSAddress);
C#
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace BindToWebService {
class Form1: Form
{
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
public Form1()
{
this.Load += new EventHandler(Form1_Load);
textBox1.Location = new System.Drawing.Point(118, 131);
textBox1.ReadOnly = true;
button1.Location = new System.Drawing.Point(133, 60);
button1.Click += new EventHandler(button1_Click);
button1.Text = "Get zipcode";
ClientSize = new System.Drawing.Size(292, 266);
Controls.Add(this.button1);
Controls.Add(this.textBox1);
}
[System.Web.Services.WebServiceBindingAttribute(Name="ZipCodeResolverSoap",
Namespace="http://webservices.eraserver.net/")]
public class ZipCodeResolver:
System.Web.Services.Protocols.SoapHttpClientProtocol
"http://webservices.eraserver.net/zipcoderesolver/zipcoderesolver.asmx";
}
//''<remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute
("http://webservices.eraserver.net/CorrectedAddressXml",
RequestNamespace="http://webservices.eraserver.net/",
ResponseNamespace="http://webservices.eraserver.net/",
Use=System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public USPSAddress CorrectedAddressXml(string accessCode,
string address, string city, string state)
{
object[] results = this.Invoke("CorrectedAddressXml",
new object[]{accessCode, address, city, state});
return ((USPSAddress) results[0]);
}
//''<remarks/>
public System.IAsyncResult BeginCorrectedAddressXml(string
accessCode,
string address, string city, string state,
System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("CorrectedAddressXml",
new object[]{accessCode, address, city, state}, callback,
asyncState);
}
[System.SerializableAttribute,
System.Xml.Serialization.XmlTypeAttribute(
Namespace="http://webservices.eraserver.net/")]
public class USPSAddress
{
{
private object[] results;
Compilando o código
Este é um exemplo completo que inclui um método Main e uma versão abreviada do
código de proxy do lado do cliente.
Confira também
Componente BindingSource
Como: Associar um controle do Windows Forms a um tipo
Como: Como associar controles do
Windows Forms a valores de banco de
dados DBNull
Artigo • 02/06/2023
Quando você associa Windows Forms controles a uma fonte de dados e a fonte de
dados retorna um DBNull valor, você pode substituir um valor apropriado sem
manipular, formatar ou analisar eventos. A NullValue propriedade será convertida
DBNull em um objeto especificado ao formatar ou analisar os valores da fonte de
dados.
Exemplo
O exemplo a seguir demonstra como associar um DBNull valor em duas situações
diferentes. O primeiro demonstra como definir a NullValue propriedade de uma cadeia
de caracteres; a segunda demonstra como definir a NullValue propriedade de uma
imagem.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace DBNullCS
{
public class Form1 : Form
{
public Form1()
{
this.Load += new EventHandler(Form1_Load);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
}
Compilando o código
Este exemplo requer:
Confira também
Componente BindingSource
Como: Como identificar erros e exceções que ocorram na associação de dados
Como: Associar um controle do Windows Forms a um tipo
Como: Associar controles do Windows
Forms ao componente BindingSource
usando o designer
Artigo • 02/06/2023
Para concluir o procedimento, presume-se que você associará a uma fonte de dados
derivada de um banco de dados. Para obter mais informações sobre como criar fontes
de dados de outros armazenamentos de dados, consulte Adicionar novas fontes de
dados.
2. Na janela Propriedades:
a. Expanda o nó (DataBindings).
8. Selecione os objetos de banco de dados para trazer para o seu aplicativo. Nesse
caso, selecione um campo em uma tabela que você deseja TextBox exibir.
Confira também
BindingSource
BindingNavigator
Adicionar novas fontes de dados
Janela Fontes de Dados
Como: Criar uma tabela de pesquisa
com o componente BindingSource do
Windows Forms
Artigo • 02/06/2023
A tabela de pesquisa é uma tabela de dados que tem uma coluna que exibe dados de
registros em uma tabela relacionada. Nos procedimentos a seguir, um controle
ComboBox é usado para exibir o campo com a relação de chave estrangeira da tabela
pai para a tabela filho.
Para ajudar a visualizar essas duas tabelas e essa relação, veja a seguir um exemplo de
uma tabela pai e filho:
CustomerID CustomerName
Neste cenário, uma tabela, CustomersTable, armazena a informação real que você deseja
exibir e salvar. Mas, para economizar espaço, a tabela deixa de fora dados que
adicionam clareza. A outra tabela, OrdersTable, contém apenas informações
relacionadas à aparência sobre qual número da ID do cliente é equivalente a qual data
de pedido e ID do pedido. Não há nenhuma menção dos nomes dos clientes.
2. Arraste outros controles para exibir detalhes da tabela filho. O formato dos dados
na tabela deve determinar quais controles você escolhe. Para obter mais
informações, consulte Controles dos Windows Forms por função.
3. Clique na seta ao lado da caixa suspensa Fonte de Dados. Se uma fonte de dados
foi configurada anteriormente para o projeto ou formulário, ela aparecerá; caso
contrário, siga as seguintes etapas (Este exemplo usa as tabelas Clientes e Pedidos
do banco de dados de amostra Northwind e refere-se a elas nos parênteses).
f. Selecione os objetos de banco de dados para trazer para o seu aplicativo. Neste
caso, selecione uma tabela pai e uma tabela filho (por exemplo, clientes e
pedidos) com uma relação de chave estrangeira.
h. Clique em Concluir.
Confira também
BindingSource
Componente BindingSource
Controle ComboBox
Associar controles a dados no Visual Studio
Como: Como personalizar a adição de
item com o BindingSource do Windows
Forms
Artigo • 21/06/2023
7 Observação
Exemplo
O exemplo a seguir demonstra como associar um DataGridView controle a uma fábrica
de classes usando um BindingSource componente . Quando o usuário clica na
DataGridView nova linha do controle, o AddingNew evento é gerado. O manipulador de
eventos cria um novo DemoCustomer objeto , que é atribuído à
AddingNewEventArgs.NewObject propriedade . Isso faz com que o novo DemoCustomer
objeto seja adicionado à BindingSource lista do componente e seja exibido na nova
linha do DataGridView controle.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Data.SqlClient;
using System.Windows.Forms;
public Form1()
{
// Set up the form.
this.Size = new Size(800, 800);
this.Load += new EventHandler(Form1_Load);
this.Controls.Add(status);
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
set
{
this.companyNameValue = value;
}
}
set
{
this.phoneNumberValue = value;
}
}
}
Compilando o código
Este exemplo requer:
Confira também
BindingNavigator
DataGridView
BindingSource
Componente BindingSource
Como: Associar um controle do Windows Forms a um tipo
Como: Como identificar erros e
exceções que ocorram na associação de
dados
Artigo • 21/06/2023
Muitas vezes, erros e exceções ocorrem nos objetos de negócios subjacentes quando
você os associa aos controles. Você pode interceptar esses erros e exceções e, em
seguida, recuperar ou passar as informações de erro para o usuário manipulando o
BindingComplete evento para um componente , BindingSourceou CurrencyManager
específicoBinding.
Exemplo
Este exemplo de código demonstra como tratar erros e exceções que ocorrem durante
uma operação de associação de dados. Ele demonstra como interceptar erros
manipulando o Binding.BindingComplete evento dos Binding objetos . Para interceptar
erros e exceções ao manipular esse evento, você deve habilitar a formatação para a
associação. Você pode habilitar a formatação quando a associação é construída ou
adicionada à coleção de associação ou definindo a FormattingEnabled propriedade
true como .
C#
using System;
using System.Drawing;
using System.Windows.Forms;
public Form1()
{
//Set up the textbox controls.
this.textBox1.Location = new System.Drawing.Point(82, 13);
this.textBox1.TabIndex = 1;
this.textBox2.Location = new System.Drawing.Point(81, 47);
this.textBox2.TabIndex = 2;
this.textBox3.Location = new System.Drawing.Point(81, 83);
this.textBox3.TabIndex = 3;
// Add the textbox controls to the form
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.textBox3);
partNumberBinding = textBox2.DataBindings.Add("Text",
BindingSource1, "PartNumber",
true);
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Quando o código está em execução e uma cadeia de caracteres vazia é inserida para o
nome da peça ou um valor menor que 100 é inserido para o número de peça, uma caixa
de mensagem será exibida. Isso é resultado do tratamento do Binding.BindingComplete
evento para essas associações de caixa de texto.
Compilando o código
Este exemplo requer:
Confira também
Binding.BindingComplete
BindingSource.BindingComplete
Componente BindingSource
Como: Gerar notificações de alteração
usando um BindingSource e a interface
INotifyPropertyChanged
Artigo • 21/06/2023
7 Observação
Exemplo
O exemplo de código a seguir demonstra uma implementação simples da
INotifyPropertyChanged interface. Ele também mostra como o BindingSource passa
automaticamente uma alteração de fonte de dados para um controle associado quando
o BindingSource está associado a uma lista do INotifyPropertyChanged tipo.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Runtime.CompilerServices;
using System.Windows.Forms;
// Change the namespace to the project name.
namespace TestNotifyPropertyChangedCS
{
// This form demonstrates using a BindingSource to bind
// a list to a DataGridView control. The list does not
// raise change notifications. However the DemoCustomer type
// in the list does.
public partial class Form1 : Form
{
// This button causes the value of a list element to be changed.
private Button changeItemBtn = new Button();
public Form1()
{
InitializeComponent();
set
{
if (value != this.customerNameValue)
{
this.customerNameValue = value;
NotifyPropertyChanged();
}
}
}
set
{
if (value != this.phoneNumberValue)
{
this.phoneNumberValue = value;
NotifyPropertyChanged();
}
}
}
}
}
Compilando o código
Este exemplo requer:
Algumas fontes de dados para seus controles não geram notificações de alteração
quando os itens são alterados, adicionados ou excluídos. Com o BindingSource
componente, você pode associar a essas fontes de dados e gerar uma notificação de
alteração do código.
Exemplo
Esse formulário demonstra o uso de um BindingSource componente para associar uma
lista a um DataGridView controle. A lista não gera notificações de alteração, portanto, o
ResetItem método no BindingSource é chamado quando um item na lista é alterado. .
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Diagnostics;
using System.Drawing;
using System.Data.SqlClient;
using System.Windows.Forms;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
set
{
this.companyNameValue = value;
}
}
Compilando o código
Este exemplo requer:
Confira também
BindingNavigator
DataGridView
BindingSource
Componente BindingSource
Como: Associar um controle do Windows Forms a um tipo
Como: Refletir atualizações feitas na
fonte de dados em um controle do
Windows Forms com o BindingSource
Artigo • 02/06/2023
Quando você usa controles associados a dados, às vezes você precisa responder a
alterações na fonte de dados quando a fonte de dados não gera eventos alterados pela
lista. Ao usar o BindingSource componente para associar sua fonte de dados a um
controle Windows Forms, você pode notificar o controle de que sua fonte de dados foi
alterada chamando o ResetBindings método.
Exemplo
O exemplo de código a seguir demonstra o uso do ResetBindings método para notificar
um controle associado sobre uma atualização na fonte de dados.
C#
using System;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace System_Windows_Forms_UpdateBinding
{
class Form1 : Form
{
// Declare the objects on the form.
private Label label1;
private Label label2;
private TextBox textBox1;
private TextBox textBox2;
private Button button1;
private BindingSource bindingSource1;
ArrayList states;
public Form1()
{
// Basic form setup.
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.textBox2 = new System.Windows.Forms.TextBox();
this.button1.Location = new System.Drawing.Point(12, 18);
this.button1.Size = new System.Drawing.Size(119, 38);
this.button1.Text = "RemoveAt(0)";
this.button1.Click += new
System.EventHandler(this.button1_Click);
this.textBox1.Location = new System.Drawing.Point(55, 75);
this.textBox1.ReadOnly = true;
this.textBox1.Size = new System.Drawing.Size(119, 20);
this.label1.Location = new System.Drawing.Point(12, 110);
this.label1.Size = new System.Drawing.Size(43, 14);
this.label1.Text = "Capital:";
this.label2.Location = new System.Drawing.Point(12, 78);
this.label2.Size = new System.Drawing.Size(34, 14);
this.label2.Text = "State:";
this.textBox2.Location = new System.Drawing.Point(55, 110);
this.textBox2.Size = new System.Drawing.Size(119, 20);
this.textBox2.ReadOnly = true;
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1);
this.Text = "Form1";
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
Compilando o código
Este exemplo requer:
Confira também
BindingNavigator
DataGridView
BindingSource
Componente BindingSource
Como: Associar um controle do Windows Forms a um tipo
Como: Compartilhar dados associados
entre formulários usando o componente
BindingSource
Artigo • 21/06/2023
Exemplo
O exemplo de código a seguir demonstra como compartilhar um BindingSource e seus
dados associados entre formulários. Neste exemplo, o compartilhado BindingSource é
passado para o construtor do formulário filho. O formulário filho permite que o usuário
edite os dados para o atualmente item selecionado no formulário principal.
7 Observação
C#
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Data;
namespace BindingSourceMultipleForms
{
public class MainForm : Form
{
public MainForm()
{
this.Load += new EventHandler(MainForm_Load);
}
private BindingSource bindingSource1;
private Button button1;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new MainForm());
}
}
// Associate each text box with a column from the data source.
textBox1.DataBindings.Add("Text", formDataSource, "cd", true,
DataSourceUpdateMode.OnPropertyChanged);
Compilando o código
Este exemplo requer:
Confira também
Componente BindingSource
associação de dados Windows Forms
Como: Como identificar erros e exceções que ocorram na associação de dados
Como: Classificar e filtrar dados
ADO.NET com o componente
BindingSource do Windows Forms
Artigo • 21/06/2023
7 Observação
C#
BindingSource1.Filter = "ContactTitle='Owner'";
C#
Exemplo
O exemplo de código a seguir carrega dados da tabela Customers do banco de dados
de exemplo Northwind em um DataGridView controle e filtra e classifica os dados
exibidos.
C#
Compilando o código
Para executar este exemplo, cole o código em um formulário que contém um
BindingSource nomeado BindingSource1 e um DataGridView chamado dataGridView1 .
Manipule o Load evento para o formulário e chame
InitializeSortedFilteredBindingSource no método de manipulador de eventos de
carga.
Confira também
Sort
Filter
Como instalar bancos de dados de exemplo
Componente BindingSource
Controle de botão (Windows Forms)
Artigo • 02/06/2023
O controle Button dos Windows Forms permite que o usuário clique nele para realizar
uma ação. O controle Button pode exibir texto e imagens. Quando o botão é clicado,
ele se parece como se estivesse sendo empurrado e solto.
Nesta seção
Visão geral do controle de botão
Explica o que é esse controle e seus principais recursos e propriedades.
Consulte também Como designar um botão dos Windows Forms como botão Aceitar
usando o Designer e Como designar um botão dos Windows Forms como o botão
Cancelar usando o Designer.
Referência
Classe Button
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Consulte também Entrada do usuário em caixas de diálogo e Como fechar caixas de
diálogo e manter a entrada do usuário.
Visão geral do controle Button
(Windows Forms)
Artigo • 21/06/2023
O controle Button dos Windows Forms permite que o usuário clique nele para realizar
uma ação. Quando o botão é clicado, ele se parece como se estivesse sendo empurrado
e solto. Sempre que o usuário clica em um botão, o Click manipulador de eventos é
invocado. Você coloca o código no Click manipulador de eventos para executar
qualquer ação escolhida.
O texto exibido no botão está contido na Text propriedade . Se o texto exceder a largura
do botão, ele será encapsulado para a próxima linha. No entanto, ele será recortado se
o controle não puder acomodar sua altura geral. Para obter mais informações, consulte
Como definir o texto exibido por um controle dos Windows Forms. A Text propriedade
pode conter uma tecla de acesso, o que permite que um usuário "clique" no controle
pressionando a tecla ALT com a tecla de acesso. Para obter mais detalhes, consulte
Como criar chaves de acesso para controles dos Windows Forms. A aparência do texto é
controlada pela Font propriedade e pela TextAlign propriedade .
Confira também
Button
Como responder a cliques no botão dos Windows Forms
Forma de selecionar um controle de botão dos Windows Forms
Como: Designar um botão do Windows Forms como o botão Aceitar usando o
designer
Como: Designar um botão do Windows Forms como o botão Cancelar usando o
designer
Controle de botão
Como: Designar um botão do Windows
Forms como o botão Aceitar
Artigo • 02/06/2023
Em qualquer Formulário do Windows, você pode designar um Button controle para ser
o botão aceitar, também conhecido como botão padrão. Sempre que o usuário
pressiona a tecla ENTER, o botão padrão é clicado independentemente de qual outro
controle no formulário tenha o foco.
7 Observação
As exceções a isso são quando o controle com foco é outro botão — nesse caso, o
botão com o foco será clicado — ou uma caixa de texto de várias linhas ou um
controle personalizado que intercepta a tecla ENTER.
C#
Confira também
AcceptButton
Visão geral do controle de botão
Forma de selecionar um controle de botão dos Windows Forms
Como responder a cliques no botão dos Windows Forms
Como: Designar um botão do Windows Forms como o botão Cancelar
Controle de botão
Como: Designar um botão do Windows
Forms como o botão Aceitar usando o
designer
Artigo • 02/06/2023
Em qualquer Formulário do Windows, você pode designar um Button controle para ser
o botão aceitar, também conhecido como botão padrão. Sempre que o usuário
pressiona a tecla ENTER, o botão padrão é clicado independentemente de qual outro
controle no formulário tenha o foco. As exceções a isso são quando o controle com foco
é outro botão — nesse caso, o botão com o foco será clicado — ou uma caixa de texto
de várias linhas ou um controle personalizado que intercepta a tecla ENTER.
Confira também
AcceptButton
Visão geral do controle de botão
Forma de selecionar um controle de botão dos Windows Forms
Como responder a cliques no botão dos Windows Forms
Como: Designar um botão do Windows Forms como o botão Cancelar usando o
designer
Controle de botão
Como: Designar um botão do Windows
Forms como o botão Cancelar
Artigo • 02/06/2023
Em qualquer Formulário do Windows, você pode designar um Button controle para ser
o botão cancelar. Um botão cancelar é clicado sempre que o usuário pressiona a tecla
ESC, independentemente de qual outro controle no formulário tenha o foco.
Normalmente, esse botão é programado para permitir que o usuário saia rapidamente
de uma operação sem se comprometer com nenhuma ação.
C#
Confira também
CancelButton
Visão geral do controle de botão
Forma de selecionar um controle de botão dos Windows Forms
Como responder a cliques no botão dos Windows Forms
Como: Designar um botão do Windows Forms como o botão Aceitar
Controle de botão
Como: Designar um botão do Windows
Forms como o botão Cancelar usando o
designer
Artigo • 02/06/2023
Em qualquer Formulário do Windows, você pode designar um Button controle para ser
o botão cancelar. Um botão cancelar é clicado sempre que o usuário pressiona a tecla
ESC, independentemente de qual outro controle no formulário tenha o foco.
Normalmente, esse botão é programado para permitir que o usuário saia rapidamente
de uma operação sem se comprometer com nenhuma ação.
Confira também
CancelButton
Visão geral do controle de botão
Forma de selecionar um controle de botão dos Windows Forms
Como responder a cliques no botão dos Windows Forms
Como: Designar um botão do Windows Forms como o botão Aceitar usando o
designer
Controle de botão
Como responder a cliques no botão dos
Windows Forms
Artigo • 21/06/2023
O uso mais básico de um controle Windows Forms Button é executar algum código
quando o botão é clicado.
Se o usuário tentar clicar duas vezes no Button controle, cada clique será processado
separadamente; ou seja, o controle não dá suporte ao evento de clique duplo.
C#
Confira também
Visão geral do controle de botão
Forma de selecionar um controle de botão dos Windows Forms
Controle de botão
Forma de selecionar um controle de
botão dos Windows Forms
Artigo • 02/06/2023
Um botão dos Windows Forms pode ser selecionado das seguintes maneiras:
Pressione a tecla de acesso (ALT + a letra sublinhada) para o botão. Para obter
mais informações sobre chaves de acesso, consulte Como criar chaves de acesso
para controles dos Windows Forms.
Confira também
Visão geral do controle de botão
Como responder a cliques no botão dos Windows Forms
Controle de botão
Controle CheckBox (Windows Forms)
Artigo • 02/06/2023
O controle Windows Forms CheckBox indica se uma condição específica está ativada ou
desativada. É usado normalmente para apresentar uma seleção Sim/Não ou
Verdadeiro/Falso ao usuário. Use os controles de caixa de seleção em grupos para exibir
múltiplas opções entre as quais o usuário pode escolher uma ou mais. É semelhante ao
RadioButton controle, mas qualquer número de controles agrupados CheckBox pode ser
selecionado.
Nesta seção
Visão geral do controle CheckBox
Explica o que é esse controle e seus principais recursos e propriedades.
Referência
Classe CheckBox
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle CheckBox
(Windows Forms)
Artigo • 02/06/2023
O controle Windows Forms CheckBox indica se uma condição específica está ativada ou
desativada. É usado normalmente para apresentar uma seleção Sim/Não ou
Verdadeiro/Falso ao usuário. Use os controles de caixa de seleção em grupos para exibir
múltiplas opções entre as quais o usuário pode escolher uma ou mais.
Uma caixa de seleção pode se conectar aos elementos de um banco de dados usando
associação de dados simples. Várias caixas de seleção podem ser agrupadas usando o
GroupBox controle. Isso é útil para a aparência visual e também para o design de
interface do usuário, uma vez que os controles agrupados podem ser movidos juntos no
designer de formulários. Para mais informações, consulte Associação de dados do
Windows Forms e Controle do GroupBox.
Confira também
CheckBox
Como definir opções com controles CheckBox dos Windows Forms
Como responder a cliques em CheckBox dos Windows Forms
Controle CheckBox
Como responder a cliques CheckBox
dos Windows Forms
Artigo • 21/06/2023
C#
7 Observação
Se o usuário tentar clicar duas vezes no CheckBox controle, cada clique será
processado separadamente; ou seja, o CheckBox controle não dá suporte ao
evento de clique duplo.
7 Observação
C#
7 Observação
Confira também
CheckBox
Visão geral do controle CheckBox
Como definir opções com controles CheckBox dos Windows Forms
Controle de CheckBox
Como definir opções com controles
CheckBox dos Windows Forms
Artigo • 21/06/2023
Um controle Windows Forms CheckBox é usado para fornecer aos usuários opções
True/False ou Sim/Não. O controle exibe uma marca de marcar quando é selecionado.
C#
Confira também
CheckBox
Visão geral do controle CheckBox
Como responder a cliques em CheckBox dos Windows Forms
Controle de CheckBox
Controle CheckedListBox (Windows
Forms)
Artigo • 02/06/2023
O controle Windows Forms CheckedListBox exibe uma lista de itens, como o ListBox
controle, e também pode exibir uma marca de seleção ao lado de itens na lista.
Nesta seção
Visão geral do controle CheckedListBox
Explica o que é esse controle e seus principais recursos e propriedades.
Referência
Classe CheckedListBox
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles dos Windows Forms usados para listar opções
Fornece uma lista de coisas que você pode fazer com caixas de listagem, caixas de
combinação e caixas de listagem marcadas.
O controle Windows Forms CheckedListBox estende o ListBox controle. Ele faz quase
tudo o que uma caixa de listagem e também pode exibir uma marca de seleção ao lado
de itens na lista. Outras diferenças entre os dois controles são que as caixas de listagem
marcadas só dão suporte DrawMode.Normal; e que as caixas de listagem marcadas só
podem ter um item ou nenhum selecionado. Observe que um item selecionado é
realçado no formulário e não é o mesmo que um item marcado.
Confira também
CheckedListBox
CheckedListBox.Items
ListControl.DataSource
Visão geral do controle ListBox
Controles dos Windows Forms usados para listar opções
Como: Determinar itens verificados no controle CheckedListBox do Windows
Forms
Como: Determinar itens verificados no
controle CheckedListBox do Windows
Forms
Artigo • 02/06/2023
C#
ou –
C#
int i;
string s;
s = "Checked items:\n" ;
for (i = 0; i <= (checkedListBox1.Items.Count-1); i++)
{
if (checkedListBox1.GetItemChecked(i))
{
s = s + "Item " + (i+1).ToString() + " = " +
checkedListBox1.Items[i].ToString() + "\n";
}
}
MessageBox.Show (s);
Confira também
Controles dos Windows Forms usados para listar opções
Componente ColorDialog (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do componente ColorDialog
Apresenta os conceitos gerais do componente, que ColorDialog permite exibir uma
caixa de diálogo pré-configurada que os usuários podem usar para selecionar cores de
uma paleta.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
ColorDialog
Fornece informações de referência sobre a ColorDialog classe e seus membros.
Confira também
ColorDialog
Componente ColorDialog
Controles e componentes da caixa de diálogo
Como: Alterar a aparência do componente ColorDialog do Windows Forms
Como: Alterar a aparência do
componente ColorDialog do Windows
Forms
Artigo • 21/06/2023
A maioria das propriedades restringe quais cores o usuário pode selecionar da caixa de
diálogo. Se a AllowFullOpen propriedade estiver definida true como , o usuário poderá
definir cores personalizadas. A FullOpen propriedade será true se a caixa de diálogo for
expandida para definir cores personalizadas; caso contrário, o usuário deverá clicar em
um botão "Definir Cores Personalizadas". Quando a AnyColor propriedade é definida
true como , a caixa de diálogo exibe todas as cores disponíveis no conjunto de cores
básicas. Se a SolidColorOnly propriedade estiver definida true como , o usuário não
poderá selecionar cores dithered; somente cores sólidas estarão disponíveis para
seleção.
C#
colorDialog1.AllowFullOpen = true;
colorDialog1.AnyColor = true;
colorDialog1.SolidColorOnly = false;
colorDialog1.ShowHelp = true;
Confira também
ColorDialog
Componente ColorDialog
Visão geral do componente ColorDialog
Como: Mostrar uma paleta de cores
com o componente ColorDialog
Artigo • 21/06/2023
O componente ColorDialog exibe uma paleta de cores e retorna uma propriedade que
contém a cor selecionada pelo usuário.
C#
C#
Confira também
ColorDialog
Componente ColorDialog
Controle ComboBox (Windows Forms)
Artigo • 02/06/2023
O controle Windows Forms ComboBox é usado para exibir dados em uma caixa de
combinação suspensa. Por padrão, o ComboBox controle aparece em duas partes: a parte
superior é uma caixa de texto que permite que o usuário digite um item de lista. A
segunda parte é uma caixa de listagem que exibe uma lista de itens na qual o usuário
pode selecionar item.
Nesta seção
Visão geral do controle ComboBox
Explica o que é esse controle e seus principais recursos e propriedades.
Referência
Classe ComboBox
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles dos Windows Forms usados para listar opções
Fornece uma lista de coisas que você pode fazer com caixas de listagem, caixas de
combinação e caixas de listagem marcadas.
Confira também
Controles a serem usados nos Windows Forms
Visão geral do controle ComboBox
(Windows Forms)
Artigo • 02/06/2023
O controle Windows Forms ComboBox é usado para exibir dados em uma caixa de
combinação suspensa. Por padrão, o ComboBox controle aparece em duas partes: a
parte superior é uma caixa de texto que permite que o usuário digite um item de lista. A
segunda parte é uma caixa de listagem que exibe uma lista de itens na qual o usuário
pode selecionar item. Para obter mais informações sobre outros estilos de caixa de
combinação, consulte Quando usar um ComboBox dos Windows Forms em vez de uma
caixa de listagem.
Confira também
ComboBox
Visão geral do controle ListBox
Quando usar um ComboBox dos Windows Forms em vez de um ListBox
Como: Adicionar e remover itens de um controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Como: Classificar o conteúdo de um controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Como: Acessar itens específicos em um controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Como: Associar um controle ComboBox ou ListBox do Windows Forms aos dados
Controles dos Windows Forms usados para listar opções
Como: Criar uma tabela de pesquisa para um controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Como: Criar texto dimensionado da
variável em um controle ComboBox
Artigo • 02/06/2023
Exemplo
VB
e.ItemHeight = siText.Height
e.ItemWidth = siText.Width
End Sub
Um formulário do Windows.
7 Observação
Confira também
DrawItem
DrawItemEventArgs
MeasureItem
Controles com suporte de desenho do proprietário interno
Controle ListBox
Controle ComboBox
Componente ContextMenu (Windows
Forms)
Artigo • 02/06/2023
7 Observação
Nesta seção
Visão geral do componente ContextMenu
Apresenta os conceitos gerais do componente, que ContextMenu permite que os
usuários criem menus de comandos usados com frequência associados a um objeto
selecionado.
Referência
ContextMenu
Fornece informações de referência sobre a ContextMenu classe e seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Confira também
MenuStrip
ContextMenuStrip
Visão geral do componente
ContextMenu (Windows Forms)
Artigo • 02/06/2023
) Importante
Propriedades da chave
Você pode associar um menu de atalho a um controle definindo a propriedade do
ContextMenu controle com o ContextMenu componente. Um único menu de atalho
pode ser associado a vários controles, mas cada controle pode ter apenas um menu de
atalho.
Confira também
ContextMenu
MenuStrip
ContextMenuStrip
Como: Adicionar e remover itens de
menu com o componente ContextMenu
do Windows Forms
Artigo • 02/06/2023
) Importante
C#
-ou-
C#
contextMenu1.MenuItems.Clear();
Confira também
ContextMenu
Componente ContextMenu
Visão geral do componente ContextMenu
Controle ContextMenuStrip
Artigo • 21/06/2023
Nesta seção
Visão geral do controle ContextMenuStrip
Explica o que é o controle e seus principais recursos e propriedades.
Referência
MenuStrip
Descreve os recursos da MenuStrip classe , que fornece um sistema de menus para um
formulário.
ContextMenuStrip
Descreve os recursos do ContextMenuStrip, que representa um menu de atalho.
ToolStripMenuItem
Descreve os recursos da ToolStripMenuItem classe , que representa uma opção
selecionável exibida em um MenuStrip ou ContextMenuStrip.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle
ContextMenuStrip
Artigo • 02/06/2023
7 Observação
Classe Descrição
Confira também
ToolStrip
MenuStrip
ContextMenuStrip
ToolStripMenuItem
ToolStripDropDown
Como: Associar um ContextMenuStrip a
um controle
Artigo • 02/06/2023
Depois de criar seus controles e menus de atalho, use os procedimentos a seguir para
exibir um determinado menu de atalho quando o usuário clicar com o botão direito do
mouse no controle. Esses procedimentos associam um ContextMenuStrip Formulário do
Windows e a um ToolStrip controle.
Exemplo
O exemplo de código a seguir cria um Formulário do Windows e um ToolStripe associa
um controle diferente ContextMenuStrip a cada um deles.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication10
{
public class Form1 : Form
{
private ToolStripButton toolStripButton1;
private ToolStripButton toolStripButton2;
private ToolStripButton toolStripButton3;
private ContextMenuStrip contextMenuStrip1;
private IContainer components;
private ToolStripMenuItem toolStripMenuItem1;
private ToolStripMenuItem toolStripMenuItem2;
private ContextMenuStrip contextMenuStrip2;
private ToolStripMenuItem rearrangeButtonsToolStripMenuItem;
private ToolStripMenuItem selectIconsToolStripMenuItem;
private ToolStrip toolStrip1;
public Form1()
{
InitializeComponent();
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
Compilando o código
Este exemplo requer:
Referências aos assemblies System, System.Data, System.Drawing e
System.Windows.Forms.
Confira também
ContextMenuStrip
ContextMenuStrip
ToolStrip
Como: Adicionar itens de menu a um ContextMenuStrip
Controle ContextMenuStrip
Como: Adicionar itens de menu a um
ContextMenuStrip
Artigo • 02/06/2023
Você pode adicionar apenas um item de menu ou vários itens por vez a um
ContextMenuStrip.
C#
this.contextMenuStrip1.Items.Add(toolStripMenuItem1);
C#
this.contextMenuStrip1.Items.AddRange(new
System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem1, this.toolStripMenuItem2});
Confira também
Controle ContextMenuStrip
Como: Configurar margens de imagem
e margens de verificação
ContextMenuStrip
Artigo • 02/06/2023
Exemplo
O exemplo de código a seguir demonstra como definir e personalizar as margens de
ContextMenuStrip verificação e imagem.
C#
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
C#
return sampleBitmap;
}
Compilando o código
Este exemplo requer:
Confira também
ContextMenuStrip
ToolStripDropDown
Controle ToolStrip
Como: Habilitar margens de verificação e de imagem em controles
ContextMenuStrip
Como: Habilitar margens de verificação
e de imagem em controles
ContextMenuStrip
Artigo • 02/06/2023
Exemplo
O exemplo de código a seguir demonstra como criar itens de menu que têm marcas de
seleção e imagens personalizadas.
C#
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
C#
return sampleBitmap;
}
Compilando o código
Este exemplo requer:
Confira também
ToolStripMenuItem
ToolStripDropDownMenu
MenuStrip
ToolStrip
Controle ToolStrip
Como: Identificar o evento de abertura
ContextMenuStrip
Artigo • 21/06/2023
Exemplo
O exemplo de código a seguir demonstra como manipular o Opening evento. O
manipulador de eventos adiciona itens dinamicamente a um ContextMenuStrip controle
. Para obter o exemplo de código completo, consulte Como adicionar itens ToolStrip
dinamicamente.
C#
Defina a CancelEventArgs.Cancel propriedade como true para impedir que o menu seja
aberto.
Confira também
ContextMenuStrip
Cancel
ToolStripDropDown
Controle ToolStrip
Controle DataGrid (Windows Forms)
Artigo • 02/06/2023
7 Observação
O controle Windows Forms DataGrid fornece uma interface do usuário para ADO.NET
conjuntos de dados, exibindo dados tabulares e habilitando atualizações para a fonte de
dados.
Quando o controle DataGrid estiver definido como uma fonte de dados válido, o
controle é preenchido automaticamente, criando colunas e linhas com base na forma
dos dados. O controle DataGrid pode ser usado para exibir uma única tabela ou as
relações hierárquicas entre um conjunto de tabelas.
Nesta seção
Visão geral do controle DataGrid
Descreve os recursos básicos do console DataGrid .
Como: Associar o controle DataGrid do Windows Forms a uma fonte de dados usando o
Designer
Descreve como associar um conjunto de dados ADO.NET ao DataGrid controle usando
o designer.
Como: Criar listas mestre e de detalhes com o controle DataGrid do Windows Forms
usando o Designer
Descreve como exibir duas tabelas reunidas com uma relação pai/filho em dois
controles DataGrid separados usando o designer.
Referência
DataGrid
Fornece uma visão geral da DataGrid classe.
DataSource
Fornece detalhes sobre como usar essa propriedade para associar o DataGrid controle
aos dados.
Seções relacionadas
Associação de dados do Windows Forms
Fornece links para tópicos sobre a associação de dados no Windows Forms.
Confira também
Controle DataGridView
Diferenças entre os controles DataGridView e DataGrid dos Windows Forms
Visão geral do controle DataGrid
(Windows Forms)
Artigo • 02/06/2023
7 Observação
O controle Windows Forms DataGrid exibe dados em uma série de linhas e colunas. O
caso mais simples é quando a grade está associada a uma fonte de dados com uma
única tabela que não contém relações. Nesse caso, os dados aparecem em linhas e
colunas simples, como em uma planilha. Para obter mais informações sobre a vinculação
de dados a outros controles, consulte Vinculação de dados e Windows Forms.
A captura de tela a seguir mostra um DataGrid associado a dados com várias tabelas:
Ele DataGrid pode fornecer uma interface do usuário para um conjunto de dados,
navegação entre tabelas relacionadas e recursos avançados de formatação e edição.
7 Observação
controle.
Somente uma tabela pode ser mostrada de DataGrid cada vez. Se uma relação pai-filho
for definida entre tabelas, o usuário poderá se mover entre as tabelas relacionadas para
selecionar a tabela a ser exibida no DataGrid controle. Para obter informações sobre
como associar um DataGrid controle a uma fonte de dados ADO.NET em tempo de
design ou tempo de execução, consulte Como associar o controle datagrid Windows
Forms a uma fonte de dados.
Classe DataTable
Classe DataView
Classe DataSet
Classe DataViewManager
Para obter mais informações sobre possíveis fontes de dados, consulte Fontes de dados
com suporte dos Windows Forms.
Exibição de grade
Um uso comum do DataGrid controle é exibir uma única tabela de dados de um
conjunto de dados. No entanto, o controle também pode ser usado para exibir várias
tabelas, incluindo tabelas relacionadas. A exibição da grade é ajustada automaticamente
de acordo com a fonte de dados. A tabela a seguir mostra o que é exibido para várias
configurações.
Várias A grade pode exibir um modo de exibição de árvore em que os usuários podem
tabelas. navegar para localizar a tabela que desejam exibir.
Várias A grade pode exibir um modo de exibição de árvore para selecionar tabelas ou é
tabelas possível especificar para a grade exibir a tabela pai. Os registros na tabela pai
relacionadas. permitem que os usuários naveguem até linhas filho relacionadas.
7 Observação
As relações entre um conjunto de tabelas são exibidas aos usuários por meio do uso de
uma estrutura pai/filho de navegação. As tabelas pai são o nível mais alto de dados; as
tabelas filho são as tabelas de dados derivadas de listagens de individuais nas tabelas
pai. Os expansores são exibidos em cada linha pai que contém uma tabela filho. Ao
clicar em um expansor, é gerada uma lista de links semelhantes a links Web para as
tabelas filho. Quando o usuário seleciona um link, a tabela filho é exibida. Clicar no
ícone mostrar/ocultar linhas pai ( ) ocultará as informações sobre a tabela pai ou fará
com que ela reapareça se o usuário a tiver ocultado anteriormente. O usuário pode
clicar no botão Voltar para retornar à tabela visualizada anteriormente.
Colunas e linhas
Consiste DataGrid em uma coleção de DataGridTableStyle objetos contidos na DataGrid
propriedade do TableStyles controle. Um estilo de tabela pode conter uma coleção de
DataGridColumnStyle objetos contidos na GridColumnStyles propriedade .
DataGridTableStyle. Você pode editar as propriedades e GridColumnStyles as TableStyles
propriedades usando editores de coleção acessados pela janela Propriedades.
Qualquer DataGridTableStyle associado ao DataGrid controle pode ser acessado por
meio do GridTableStylesCollection. Ele GridTableStylesCollection pode ser editado no
designer com o editor de DataGridTableStyle coleção ou programaticamente por meio
da DataGrid propriedade do TableStyles controle.
Às vezes, queremos que uma coluna específica tenha uma aparência diferente do
restante das colunas de uma tabela de dados específica. Você pode criar um conjunto
personalizado de estilos de coluna usando a GridColumnStyles propriedade.
Se você tiver criado um estilo de tabela sem estilos de coluna adicionados a ele, o Visual
Studio adicionará estilos de coluna padrão quando o formulário e a grade forem criados
em tempo de execução. No entanto, se você criou um estilo de tabela e adicionou
estilos de coluna a ele, o Visual Studio não criará nenhum estilo de coluna. Além disso,
será necessário definir estilos de coluna e atribuí-los com o nome de mapeamento para
que as colunas desejadas sejam exibidas na grade.
Como as colunas que serão incluídas na grade de dados são especificadas por meio da
atribuição de um estilo de coluna e como nenhum estilo de coluna foi atribuído às
colunas, é possível incluir colunas de dados no conjunto de dados que não são exibidas
na grade. Porém, já que a coluna de dados está incluída no conjunto de dados, os dados
não exibidos podem ser editados programaticamente.
7 Observação
Às vezes, será necessário ajustar somente uma coluna entre muitas colunas; por
exemplo, o conjunto de dados contém 50 colunas e você quer apenas 49. Nesse
caso, é mais fácil importar as 50 colunas e remover uma programaticamente, em
vez de adicionar programaticamente cada uma das 49 colunas individuais
desejadas.
Formatação
A formatação que pode ser aplicada ao DataGrid controle inclui estilos de borda, estilos
de linha de grade, fontes, propriedades de legenda, alinhamento de dados e cores
alternadas de plano de fundo entre linhas. Para obter mais informações, consulte Como
formatar o controle DataGrid dos Windows Forms.
Eventos
Além dos eventos de controle comuns, como MouseDown, Entere Scroll, o controle dá
suporte a DataGrid eventos associados à edição e navegação dentro da grade. A
CurrentCell propriedade determina qual célula está selecionada. O CurrentCellChanged
evento é gerado quando o usuário navega para uma nova célula. Quando o usuário
navega para uma nova tabela por meio de relações pai/filho, o Navigate evento é
gerado. O BackButtonClick evento é gerado quando o usuário clica no botão voltar
quando o usuário está exibindo uma tabela filho e o ShowParentDetailsButtonClick
evento é gerado quando o ícone mostrar/ocultar linhas pai é clicado.
Confira também
Controle DataGrid
Como: Associar o controle DataGrid do Windows Forms a uma fonte de dados
Como: Adicionar tabelas e colunas ao controle DataGrid do Windows Forms
Como: Excluir ou ocultar colunas no controle DataGrid do Windows Forms
Como: Formatar o controle DataGrid do Windows Forms
Como: Adicionar tabelas e colunas ao
controle DataGrid do Windows Forms
Artigo • 02/06/2023
7 Observação
Você pode exibir dados no controle Windows Forms DataGrid em tabelas e colunas
criando objetos DataGridTableStyle e adicionando-os ao objeto
GridTableStylesCollection, que é acessado por meio da DataGrid propriedade
TableStyles do controle. Cada estilo de tabela exibe o conteúdo da tabela de dados
especificada na propriedade MappingName do objeto DataGridTableStyle. Por padrão,
um estilo de tabela sem estilos de coluna especificados exibirá todas as colunas dentro
dessa tabela de dados. Você pode restringir quais colunas da tabela aparecem
adicionando objetos DataGridColumnStyle ao objeto GridColumnStylesCollection, que
é acessado por meio da propriedade GridColumnStyles de cada objeto
DataGridTableStyle.
U Cuidado
C#
C#
C#
ts1.GridColumnStyles.Add(myDataCol);
C#
dataGrid1.TableStyles.Add(ts1);
Confira também
Controle DataGrid
Como: Excluir ou ocultar colunas no controle DataGrid do Windows Forms
Como: Adicionar tabelas e colunas do
controle DataGrid do Windows Forms
usando o Designer
Artigo • 02/06/2023
7 Observação
Você pode exibir dados no controle Windows Forms DataGrid em tabelas e colunas
criando DataGridTableStyle objetos e adicionando-os GridTableStylesCollection ao
objeto, que é acessado por meio da DataGrid propriedade do TableStyles controle. Cada
estilo de tabela exibe o conteúdo de qualquer tabela de dados especificada na
MappingName propriedade do DataGridTableStyle. Por padrão, um estilo de tabela sem
estilos de coluna especificados exibirá todas as colunas dentro dessa tabela de dados.
Você pode restringir quais colunas da tabela aparecem adicionando
DataGridColumnStyle objetos ao GridColumnStylesCollection, que é acessado por meio
da GridColumnStyles propriedade de cada DataGridTableStyle.
Confira também
Controle DataGrid
Como: Excluir ou ocultar colunas no controle DataGrid do Windows Forms
Como: Associar o controle DataGrid do
Windows Forms a uma fonte de dados
Artigo • 02/06/2023
7 Observação
C#
sqlDataAdapter1.Fill(DsCategories1);
C#
MyProject.localhost.CategoriesService ws = new
MyProject.localhost.CategoriesService();
ws.Credentials = System.Net.CredentialCache.DefaultCredentials;
DsCategories1.Merge(ws.GetCategories());
7 Observação
C#
DataGrid1.SetDataBinding(DsCustomers1, "Customers");
C#
DataGrid1.SetDataBinding(DsCustomers1, "");
7 Observação
C#
sqlDataAdapter1.Fill(DsCategories1);
Se não houver nenhum estilo de tabela, a tabela ainda será vista, mas com
formatação mínima e todas as colunas visíveis.
7 Observação
7 Observação
C#
C#
C#
Confira também
DataSets ADO.NET
Como: Excluir ou ocultar colunas no controle DataGrid do Windows Forms
Como: Adicionar tabelas e colunas ao controle DataGrid do Windows Forms
Como: Associar o controle DataGrid do Windows Forms a uma fonte de dados
Como: Criar listas mestre e de detalhes
com o controle DataGrid do Windows
Forms
Artigo • 02/06/2023
7 Observação
Se você DataSet contiver uma série de tabelas relacionadas, poderá usar dois DataGrid
controles para exibir os dados em um formato mestre/detalhe. Um DataGrid é
designado para ser a grade mestra e o segundo é designado para ser a grade de
detalhes. Quando você seleciona uma entrada na lista mestra, todas as entradas filho
relacionados são mostradas na lista de detalhes. Por exemplo, se você DataSet contiver
uma tabela Customers e uma tabela pedidos relacionadas, você especificaria a tabela
Customers para ser a grade mestra e a tabela Pedidos para ser a grade de detalhes.
Quando um cliente é selecionado na grade principal, todos os pedidos associados a ele
na tabela Pedidos serão exibidos na grade de detalhes.
3. Declare uma variável de tipo DataRelation para representar a relação que você
deseja criar.
6. Use o SetDataBinding método do DataGrid para associar cada uma das grades ao
DataSet.
O exemplo a seguir mostra como definir uma relação mestre/detalhe entre as
tabelas Clientes e Pedidos em um ( ds ) gerado DataSet anteriormente.
C#
DataRelation myDataRelation;
myDataRelation = new DataRelation("CustOrd",
ds.Tables["Customers"].Columns["CustomerID"],
ds.Tables["Orders"].Columns["CustomerID"]);
// Add the relation to the DataSet.
ds.Relations.Add(myDataRelation);
GridOrders.SetDataBinding(ds,"Customers");
GridDetails.SetDataBinding(ds,"Customers.CustOrd");
Confira também
Controle DataGrid
Visão geral do controle DataGrid
Como: Associar o controle DataGrid do Windows Forms a uma fonte de dados
Como: Criar listas mestre e de detalhes
com o controle DataGrid do Windows
Forms usando o Designer
Artigo • 02/06/2023
7 Observação
Se você DataSet contiver uma série de tabelas relacionadas, poderá usar dois DataGrid
controles para exibir os dados em um formato de detalhes mestre. Um DataGrid é
designado para ser a grade mestra e o segundo é designado para ser a grade de
detalhes. Quando você seleciona uma entrada na lista mestra, todas as entradas filho
relacionados são mostradas na lista de detalhes. Por exemplo, se você DataSet contiver
uma tabela Customers e uma tabela pedidos relacionadas, você especificaria a tabela
Customers para ser a grade mestra e a tabela Pedidos para ser a grade de detalhes.
Quando um cliente é selecionado na grade principal, todos os pedidos associados a ele
na tabela Pedidos serão exibidos na grade de detalhes.
7 Observação
As etapas a seguir não são aplicáveis ao Visual Studio 2005, que usa a janela
Fontes de Dados para associação de dados em tempo de design. Para obter
mais informações, consulte Associar controles a dados no Visual Studio e
Como exibir dados relacionados em um Aplicativo do Windows Forms.
4. Defina as relações entre as tabelas usando o XML Designer. Para ver mais detalhes,
consulte “Como criar relacionamentos um para muitos em esquemas XML e
conjuntos de dados” no MSDN.
Confira também
Controle DataGrid
Visão geral do controle DataGrid
Como: Associar o controle DataGrid do Windows Forms a uma fonte de dados
Associar controles a dados no Visual Studio
Como: Excluir ou ocultar colunas no
controle DataGrid do Windows Forms
Artigo • 02/06/2023
7 Observação
As colunas excluídas ou ocultas ainda existem na fonte de dados à qual a grade está
associada e ainda podem ser acessados por meio de programação. Elas simplesmente
não são visíveis no datagrid.
7 Observação
Se seu aplicativo não acessar determinadas colunas de dados e você não desejar
exibi-los no datagrid, provavelmente não será necessário nem mesmo incluí-los na
fonte de dados.
C#
C#
Confira também
Como: Alterar os dados exibidos em tempo de execução no controle DataGrid do
Windows Forms
Como: Adicionar tabelas e colunas ao controle DataGrid do Windows Forms
Como: Formatar o controle DataGrid do
Windows Forms
Artigo • 02/06/2023
7 Observação
Aplicar cores diferentes a várias partes de um DataGrid controle pode ajudar a facilitar a
leitura e a interpretação das informações. É possível aplicar cores às linhas e colunas.
Linhas e colunas também podem ser ocultadas ou exibidas como você desejar.
Como uma etapa inicial na formatação de uma grade de dados, você pode definir as
propriedades de DataGrid si mesmo. Essas opções de cor e formato formam a base da
qual você pode fazer alterações dependendo das tabelas de dados e colunas exibidas.
Propriedade Descrição
ForeColor A cor da fonte exibida pelos dados nas linhas da grade de dados.
ParentRowsBackColor Na tabela filho, indica a cor da tela de fundo das linhas pai.
ParentRowsForeColor Na tabela filho, indica a cor de primeiro plano das linhas pai.
PreferredColumnWidth A largura padrão (em pixels) das colunas na grade. Defina essa
propriedade antes de redefinir as DataSource propriedades (
DataMember separadamente ou por meio do SetDataBinding
método) ou a propriedade não terá nenhum efeito.
PreferredRowHeight A altura (em pixels) das linhas na grade. Defina essa propriedade
antes de redefinir as DataSource propriedades ( DataMember
separadamente ou por meio do SetDataBinding método) ou a
propriedade não terá nenhum efeito.
7 Observação
C#
Confira também
GridTableStylesCollection
GridColumnStylesCollection
DataGrid
Como: Excluir ou ocultar colunas no controle DataGrid do Windows Forms
Controle DataGrid
Como: Formatar o controle DataGrid do
Windows Forms usando o Designer
Artigo • 02/06/2023
7 Observação
Aplicar cores diferentes a várias partes de um DataGrid controle pode ajudar a facilitar a
leitura e a interpretação das informações. É possível aplicar cores às linhas e colunas.
Linhas e colunas também podem ser ocultadas ou exibidas como você desejar.
Com base nisso, você pode então personalizar a maneira como determinadas
tabelas são exibidas no tempo de execução.
Por fim, você pode modificar quais colunas são exibidas na grade de dados, bem
como as cores e outras formatações mostradas.
Como uma etapa inicial na formatação de uma grade de dados, você pode definir as
propriedades de DataGrid si mesmo. Essas opções de cor e formato formam a base da
qual você pode fazer alterações dependendo das tabelas de dados e colunas exibidas.
Propriedade Descrição
ForeColor A cor da fonte exibida pelos dados nas linhas da grade de dados.
ParentRowsBackColor Na tabela filho, indica a cor da tela de fundo das linhas pai.
Propriedade Descrição
ParentRowsForeColor Na tabela filho, indica a cor de primeiro plano das linhas pai.
PreferredColumnWidth A largura padrão (em pixels) das colunas na grade. Defina essa
propriedade antes de redefinir as DataSource propriedades (
DataMember separadamente ou por meio do SetDataBinding
método) ou a propriedade não terá nenhum efeito.
PreferredRowHeight A altura (em pixels) das linhas na grade. Defina essa propriedade
antes de redefinir as DataSource propriedades ( DataMember
separadamente ou por meio do SetDataBinding método) ou a
propriedade não terá nenhum efeito.
7 Observação
O nome do mapeamento é usado para especificar qual estilo de tabela deve ser
usado com cada tabela.
7 Observação
Confira também
GridTableStylesCollection
GridColumnStylesCollection
DataGrid
Como: Excluir ou ocultar colunas no controle DataGrid do Windows Forms
Controle DataGrid
Como: Responder a cliques no controle
DataGrid do Windows Forms
Artigo • 21/06/2023
7 Observação
Depois que o Windows Forms DataGrid estiver conectado a um banco de dados, você
poderá monitorar qual célula o usuário clicou.
C#
C#
this.myDataGrid.CurrentCellChanged += new
System.EventHandler(this.myDataGrid_CurrentCellChanged);
C#
switch (hti.Type)
{
case System.Windows.Forms.DataGrid.HitTestType.None :
message += "the background.";
break;
case System.Windows.Forms.DataGrid.HitTestType.Cell :
message += "cell at row " + hti.Row + ", col " + hti.Column;
break;
case System.Windows.Forms.DataGrid.HitTestType.ColumnHeader :
message += "the column header for column " + hti.Column;
break;
case System.Windows.Forms.DataGrid.HitTestType.RowHeader :
message += "the row header for row " + hti.Row;
break;
case System.Windows.Forms.DataGrid.HitTestType.ColumnResize :
message += "the column resizer for column " + hti.Column;
break;
case System.Windows.Forms.DataGrid.HitTestType.RowResize :
message += "the row resizer for row " + hti.Row;
break;
case System.Windows.Forms.DataGrid.HitTestType.Caption :
message += "the caption";
break;
case System.Windows.Forms.DataGrid.HitTestType.ParentRows :
message += "the parent row";
break;
}
Console.WriteLine(message);
}
C#
this.myDataGrid.MouseDown += new
System.Windows.Forms.MouseEventHandler
(this.myDataGrid_MouseDown);
Confira também
Controle DataGrid
Como: Alterar os dados exibidos em tempo de execução no controle DataGrid do
Windows Forms
Como: Validar a entrada com o controle
DataGrid do Windows Forms
Artigo • 21/06/2023
7 Observação
O outro tipo de validação de entrada pode ser usado para rejeitar quaisquer dados
inaceitáveis, por exemplo, um valor 0 em um campo que deve ser maior ou igual a 1 ou
uma cadeia de caracteres inadequada. Isso é feito no conjunto de dados escrevendo um
manipulador de eventos para o ColumnChanging evento ou RowChanging . O exemplo
a seguir usa o ColumnChanging evento porque o valor inaceitável não é permitido para
a coluna "Product" em particular. Você pode usar o RowChanging evento para verificar
se o valor de uma coluna "Data de Término" é posterior à coluna "Data de Início" na
mesma linha.
C#
C#
Confira também
DataGrid
ColumnChanging
SetColumnError
Controle DataGrid
Atalhos de teclado para o controle
DataGrid dos Windows Forms
Artigo • 02/06/2023
7 Observação
A tabela a seguir lista os atalhos de teclado que podem ser usados para navegação no
controle Windows FormsDataGrid:
Ação Atalho
Concluir uma entrada de célula e avance para a próxima célula abaixo. Enter
Excluir o caractere após o ponto de inserção ao editar uma célula. Delete (excluir)
Subir para a tabela pai se estiver em uma tabela filho. Mesmo ALT+SETA PARA A
comportamento que clicar no botão Voltar. ESQUERDA
Expandir links da tabela filho. ALT+SETA PARA BAIXO expande todos os ALT+SETA PARA BAIXO
links, não apenas os selecionados. ou CTRL+SINAL DE
ADIÇÃO
Recolher links da tabela filho. ALT+SETA PARA CIMA recolhe todos os ALT+SETA PARA CIMA
links, não apenas aqueles selecionados. ou CTRL+SINAL DE
SUBTRAÇÃO
Estender a seleção uma linha na direção da seta (exceto links da tabela SHIFT+SETA PARA
filho). CIMA/SETA PARA BAIXO
Estender a seleção para a linha mais não vazia mais distante na direção CTRL+SHIFT+ SETA
da seta (exceto links da tabela filho). PARA CIMA/PARA
BAIXO
Exibir a linha pai quando estiver em uma tabela filho. CTRL+PAGE DOWN
Estender a seleção para baixo uma tela (exceto por links da tabela SHIFT+PAGE DOWN
filho).
Estender a seleção para cima uma tela (exceto por links da tabela filho). SHIFT+PAGE UP
Confira também
Visão geral do controle DataGrid
Controle DataGrid
Controle DataGridView (Windows
Forms)
Artigo • 02/06/2023
O controle de DataGridView fornece uma maneira poderosa e flexível para exibir dados
em um formato de tabela. Você pode usar o controle DataGridView para mostrar as
exibições somente leitura de uma pequena quantidade de dados ou pode ajustar a
escala para mostrar exibições editáveis de grandes conjuntos de dados.
Os tópicos nesta seção descrevem os conceitos e técnicas que você pode usar para
compilar recursos DataGridView em seus aplicativos.
Nesta seção
Visão geral do controle DataGridView
Fornece tópicos que descrevem as arquitetura e os principais conceitos do controle
DataGridView do Windows Forms.
BindingSource
Fornece documentação de referência para o BindingSource componente. O
DataGridView controle e o componente BindingSource foram projetados para trabalhar
em conjunto.
Confira também
Controles a serem usados nos Windows Forms
Usando o designer com o controle
DataGridView dos Windows Forms
Artigo • 02/06/2023
O Visual Studio dá suporte de designer ao controle DataGridView que permite que você
execute várias tarefas de instalação sem escrever código. Essas tarefas incluem associar
o controle a uma fonte de dados, modificando as colunas usadas para exibir dados e
ajustando a aparência e o comportamento básico do controle.
Nesta seção
Como: Adicionar e remover colunas no controle DataGridView do Windows Forms
usando o designer
Descreve como usar as caixas de diálogo Adicionar colunas e Editar colunas para
popular e modificar a coleção de colunas.
Como associar dados ao controle DataGridView dos Windows Forms usando o designer
Descreve como usar a opção Escolher fonte de dados na smart tag do controle para se
conectar aos dados.
Como alterar o tipo de uma coluna DataGridView dos Windows Forms usando o
designer
Descreve como usar a caixa de diálogo Editar colunas para alterar os tipos de coluna.
Referência
DataGridView
Fornece a documentação de referência para o DataGridView controle.
Confira também
Controle DataGridView
Como: Adicionar e remover colunas no
controle DataGridView do Windows
Forms usando o designer
Artigo • 02/06/2023
O controle Windows Forms DataGridView deve conter colunas para exibir dados. Para
preencher o controle manualmente é preciso adicionar as colunas. De forma alternativa,
é possível associar o controle a uma fonte de dados, que gera e preenche as colunas
automaticamente. Se a fonte de dados contém mais colunas do que se deseja exibir,
remova as colunas indesejadas.
3. Clique no botão Adicionar para adicionar a coluna, fazendo com que ela apareça
no designer se as colunas existentes não preencherem ainda o controle da área de
exibição.
7 Observação
3. Clique no botão Remover para excluir a coluna, fazendo com que ela desapareça
do designer.
Confira também
DataGridView
Como criar um projeto de aplicativo Windows Forms
Como Adicionar Controles ao Windows Forms
Como: Associar dados ao controle
DataGridView do Windows Forms
usando o designer
Artigo • 02/06/2023
Você pode usar o designer para conectar um DataGridView controle a fontes de dados
de várias variedades diferentes, incluindo bancos de dados, objetos de negócios ou
serviços Web. Quando você associa o controle a uma fonte de dados usando o designer,
o controle é automaticamente associado a um BindingSource componente que
representa a fonte de dados. Além disso, as colunas são automaticamente geradas no
controle para coincidir com as informações de esquema fornecidas pela fonte de dados.
Depois que as colunas tiverem sido geradas, você poderá modificá-las para atender às
suas necessidades. Por exemplo, você pode remover ou ocultar colunas que você não
queira exibir, pode reorganizar as colunas ou pode modificar os tipos de coluna. Para
obter mais informações sobre como modificar colunas, consulte os tópicos listados na
seção Consulte também.
Você também pode associar vários controles DataGridView a tabelas relacionadas para
criar relações mestre/detalhe. Nessa configuração, um controle exibe uma tabela pai e
outro controle exibe somente as linhas de uma tabela filho que estão relacionadas à
linha atual na tabela pai. Para obter mais informações, consulte Como exibir dados
relacionados em um aplicativo dos Windows Forms.
3. Se seu projeto ainda não tiver uma fonte de dados, clique em Adicionar Fonte de
Dados do Projeto e siga as etapas indicadas pelo assistente.
Para obter mais informações, consulte Assistente de Configuração da Fonte de
Dados. A nova fonte de dados aparecerá na janela suspensa Escolher Fonte de
Dados. Se a nova fonte de dados contiver apenas um membro, como uma única
tabela de banco de dados, o controle será associado automaticamente a esse
membro. Caso contrário, prossiga para a próxima etapa.
7 Observação
Se o projeto já tiver uma fonte de dados, você também poderá usar a janela
Fontes de Dados para criar um formulário de dados. Para obter mais
informações, consulte Janela de Fontes de Dados.
Confira também
DataGridView
BindingSource
DataGridView.DataMember
DataGridView.DataSource
Como conectar-se a dados em um banco de dados
Como: Adicionar e remover colunas no controle DataGridView do Windows Forms
usando o designer
Como: Alterar a ordem de colunas no controle DataGridView do Windows Forms
usando o designer
Como alterar o tipo de uma coluna DataGridView dos Windows Forms usando o
designer
Como: Congelar colunas no controle DataGridView do Windows Forms usando o
designer
Como: Ocultar colunas no controle DataGridView do Windows Forms usando o
designer
Como: Deixar as colunas somente leitura no controle DataGridView do Windows
Forms usando o designer
Como criar um projeto de aplicativo Windows Forms
Como Adicionar Controles ao Windows Forms
Janela Fontes de Dados
Como exibir dados relacionados em um Aplicativo do Windows Forms
Como: Alterar a ordem de colunas no
controle DataGridView do Windows
Forms usando o designer
Artigo • 02/06/2023
3. Clique na seta para cima ou para baixo à direita da lista Colunas selecionadas até
que a coluna selecionada esteja na posição desejada.
Confira também
DataGridView
Como: Adicionar e remover colunas no controle DataGridView do Windows Forms
usando o designer
Como criar um projeto de aplicativo Windows Forms
Como Adicionar Controles ao Windows Forms
Como: Alterar o tipo de uma coluna
DataGridView do Windows Forms
usando o designer
Artigo • 02/06/2023
Às vezes, você deseja alterar o tipo de uma coluna que já foi adicionada a um controle
Windows FormsDataGridView. Por exemplo, talvez deseje modificar os tipos de algumas
das colunas que são geradas automaticamente quando você associa o controle a uma
fonte de dados. Isso é útil quando a tabela exibida contém colunas com chaves
estrangeiras para linhas em uma tabela relacionada. Nesse caso, talvez você queira
substituir as colunas da caixa de texto que exibem essas chaves estrangeiras com
colunas de caixa de combinação que exibem os valores mais significativos da tabela
relacionada.
7 Observação
Confira também
DataGridView
DataGridViewColumn
Como criar um projeto de aplicativo Windows Forms
Como Adicionar Controles ao Windows Forms
Como: Habilitar a reorganização da
coluna no controle DataGridView do
Windows Forms usando o designer
Artigo • 02/06/2023
Confira também
DataGridView
DataGridView.AllowUserToOrderColumns
Como: Congelar colunas no controle DataGridView do Windows Forms usando o
designer
Como criar um projeto de aplicativo Windows Forms
Como Adicionar Controles ao Windows Forms
Como: Congelar colunas no controle
DataGridView do Windows Forms
usando o designer
Artigo • 02/06/2023
Para obter esse comportamento, você pode congelar colunas no controle. Quando você
congela uma coluna, todas as colunas à esquerda (ou à direita em scripts de idioma da
direita para esquerda) são congeladas também. Colunas congeladas permanecerão no
local enquanto todas as outras colunas podem rolar. Se a reordenação de coluna estiver
habilitada, as colunas congeladas serão tratadas como um grupo diferente das colunas
não congeladas. Os usuários podem reposicionar colunas em um dos grupos, mas não
poderão mover uma coluna de um grupo para outro.
7 Observação
Às vezes, você deseja exibir apenas algumas das colunas disponíveis em um controle
Windows FormsDataGridView. Por exemplo, talvez você queira mostrar uma coluna de
salário de funcionários para usuários com credenciais de gerenciamento enquanto a
oculta de outros usuários. Como alternativa, talvez você queira associar o controle a
uma fonte de dados que contém várias colunas, sendo que você deseja exibir apenas
algumas delas. Nesse caso, você normalmente removerá as colunas que não está
interessado em exibir em vez de ocultá-las. Para saber mais, veja Como adicionar e
remover colunas no controle DataGridView dos Windows Forms usando o designer.
7 Observação
Confira também
DataGridView
DataGridViewColumn.Visible
Como: Adicionar e remover colunas no controle DataGridView do Windows Forms
usando o designer
Como criar um projeto de aplicativo Windows Forms
Como Adicionar Controles ao Windows Forms
Como: Deixar as colunas somente
leitura no controle DataGridView do
Windows Forms usando o designer
Artigo • 02/06/2023
7 Observação
Confira também
DataGridView
DataGridViewColumn.ReadOnly
Como: Adicionar e remover colunas no controle DataGridView do Windows Forms
usando o designer
Como: Evitar a adição e a exclusão de linha no controle DataGridView do Windows
Forms usando o designer
Como criar um projeto de aplicativo Windows Forms
Como Adicionar Controles ao Windows Forms
Como: Evitar a adição e a exclusão de
linha no controle DataGridView do
Windows Forms usando o designer
Artigo • 02/06/2023
Às vezes, você deseja impedir que os usuários insiram novas linhas de dados ou
excluam linhas existentes em seu DataGridView controle. Novas linhas são inseridas na
linha especial para novos registros na parte inferior do controle. Quando você
desabilitar a adição de linha, a linha para novos registros não será exibida. Em seguida,
você pode deixar o controle totalmente somente leitura desabilitando a exclusão de
linha e a edição de célula.
7 Observação
Confira também
DataGridView
DataGridView.AllowUserToAddRows
Como criar um projeto de aplicativo Windows Forms
Como Adicionar Controles ao Windows Forms
Como: Definir estilos de linhas
alternados para o controle
DataGridView do Windows Forms
usando o designer
Artigo • 02/06/2023
7 Observação
Células são exibidas usando estilos herdados de várias propriedades. Para
obter mais informações sobre herança de estilo, consulte Estilos de célula no
controle DataGridView dos Windows Forms.
Confira também
DataGridView
Estilos de célula no controle DataGridView dos Windows Forms
Formatação básica e estilos no controle DataGridView dos Windows Forms
Usando o designer com o controle DataGridView dos Windows Forms
Como criar um projeto de aplicativo Windows Forms
Como Adicionar Controles ao Windows Forms
Como: Definir estilos de célula padrão e
formatos de dados para o controle
DataGridView do Windows Forms
usando o designer
Artigo • 02/06/2023
Para obter mais informações sobre estilos de célula, consulte Estilos de Célula no
Controle DataGridView dos Windows Forms. Para definir estilos para linhas alternadas,
consulte Como Definir Estilos de Linha Alternada para o Controle DataGridView dos
Windows Forms Usando o Designer.
Você também pode definir estilos usando a RowTemplate propriedade para afetar todas
as linhas que serão adicionadas ao controle. Para obter mais informações sobre o
modelo de linha, consulte Como Usar o Modelo de Linha para Personalizar Linhas no
Controle DataGridView dos Windows Forms.
Confira também
DataGridView
DataGridViewCellStyle
DataGridView.DefaultCellStyle
DataGridView.RowsDefaultCellStyle
DataGridViewColumn.DefaultCellStyle
DataGridViewCellStyle.Format
Estilos de célula no controle DataGridView dos Windows Forms
Como: Definir estilos de linhas alternados para o controle DataGridView do
Windows Forms usando o designer
Como criar um projeto de aplicativo Windows Forms
Como Adicionar Controles ao Windows Forms
Visão geral do controle DataGridView
(Windows Forms)
Artigo • 02/06/2023
7 Observação
Com o DataGridView controle , você pode exibir e editar dados tabular de muitos tipos
diferentes de fontes de dados.
Nesta seção
Resumo de tecnologia do controle DataGridView
Resume os DataGridView conceitos de controle e o uso de classes relacionadas.
Seções relacionadas
Tipos de coluna no controle DataGridView dos Windows Forms
Discute os tipos de coluna no controle Windows Forms DataGridView usado para exibir
informações e permitir que os usuários modifiquem ou adicionem informações.
Exibindo dados no controle DataGridView dos Windows Forms
Fornece tópicos que descrevem como preencher o controle com os dados
manualmente ou de uma fonte de dados externa.
Confira também
DataGridView
BindingSource
Controle DataGridView
Funcionalidade padrão no controle DataGridView dos Windows Forms
Tratamento de teclado e mouse padrão no controle DataGridView dos Windows
Forms
Resumo de tecnologia do controle
DataGridView (Windows Forms)
Artigo • 02/06/2023
Este tópico resume as informações sobre o controle DataGridView e as classes que dão
suporte ao seu uso.
Exibir dados em um formato tabular é uma tarefa que provavelmente será executada
com frequência. O controle DataGridView foi projetado para ser uma solução completa
para apresentar dados em uma grade.
Palavras-chave
DataGridView, BindingSource, tabela, célula, vinculação de dados, modo virtual
Namespaces
System.Windows.Forms
System.Data
Tecnologias relacionadas
BindingSource
Tela de fundo
Designers de interface do usuário com frequência consideram necessário exibir dados
tabulares para os usuários. O .NET Framework fornece várias maneiras de mostrar dados
em uma tabela ou grade. O controle DataGridView representa a mais recente evolução
dessa tecnologia para aplicativos dos Windows Forms.
de dados podem ser usados como uma fonte de dados ou o controle DataGridView
pode operar sem nenhuma fonte de dados associada.
padrão.
Para obter mais informações, consulte Como personalizar células e colunas no controle
DataGridView dos Windows Forms estendendo o comportamento e aparência e Como
hospedar controles em células DataGridView dos Windows Forms.
DataGridViewCellStyle
IDataGridViewEditingCell
IDataGridViewEditingControl
What's New
O DataGridView controle foi projetado para ser uma solução completa para exibir dados
tabulares com Windows Forms. Você deve considerar o uso do DataGridView controle
antes de outras soluções, como DataGrid, quando estiver criando um novo aplicativo.
Para obter mais informações, consulte Diferenças entre os controles Windows Forms
DataGridView e DataGrid.
Confira também
Visão geral do controle DataGridView
Arquitetura de controle DataGridView
Protegendo informações de conexão
Arquitetura do controle DataGridView
(Windows Forms)
Artigo • 02/06/2023
Elementos de arquitetura
As classes complementares primárias DataGridView derivam de DataGridViewElement. O
modelo de objeto a seguir ilustra a hierarquia de DataGridViewElement herança.
DataGridViewElementStates
A enumeração DataGridViewElementStates contém os seguintes valores:
None
Frozen
ReadOnly
Resizable
ResizableSet
Selected
Visible
Os valores dessa enumeração podem ser combinados com os operadores lógicos bit a
bit, de modo que a State propriedade possa expressar mais de um estado ao mesmo
tempo. Por exemplo, um DataGridViewElement pode ser simultaneamente Frozen,
Selectede Visible.
Células e faixas
O DataGridView controle é composto por dois tipos fundamentais de objetos: células e
bandas. Todas as células derivam da DataGridViewCell classe base. Os dois tipos de
bandas e DataGridViewColumnDataGridViewRowambos derivam da DataGridViewBand
classe base.
DataGridViewCell
A célula é a unidade fundamental de interação para o DataGridView. A exibição é
centralizada das células e entrada de dados geralmente é realizada por meio das células.
Você pode acessar células usando a Cells coleção da DataGridViewRow classe e acessar
as células selecionadas usando a SelectedCells coleção do DataGridView controle. O
modelo de objeto a seguir ilustra esse uso e mostra a hierarquia de DataGridViewCell
herança.
O DataGridViewCell tipo é uma classe base abstrata, da qual todos os tipos de célula
derivam. DataGridViewCelle seus tipos derivados não são controles Windows Forms,
mas alguns controles de Windows Forms de host. Qualquer funcionalidade de edição
com suporte de uma célula normalmente é manipulada por um controle hospedado.
DataGridViewTextBoxCell
DataGridViewButtonCell
DataGridViewLinkCell
DataGridViewCheckBoxCell
DataGridViewComboBoxCell
DataGridViewImageCell
DataGridViewHeaderCell
DataGridViewRowHeaderCell
DataGridViewColumnHeaderCell
DataGridViewTopLeftHeaderCell
DataGridViewColumn
O esquema do armazenamento de DataGridView dados anexado do controle é expresso
nas DataGridView colunas do controle. Você pode acessar as DataGridView colunas do
controle usando a Columns coleção. Você pode acessar as colunas selecionadas usando
a SelectedColumns coleção. O modelo de objeto a seguir ilustra esse uso e mostra a
hierarquia de DataGridViewColumn herança.
Alguns dos principais tipos de células têm tipos de colunas correspondentes. Eles são
derivados da DataGridViewColumn classe base.
DataGridViewButtonColumn
DataGridViewCheckBoxColumn
DataGridViewComboBoxColumn
DataGridViewImageColumn
DataGridViewTextBoxColumn
DataGridViewLinkColumn
DataGridViewComboBoxEditingControl
DataGridViewTextBoxEditingControl
Para obter informações sobre como criar seus próprios controles de edição, consulte
Como hospedar controles em células DataGridView dos Windows Forms.
DataGridViewRow
A DataGridViewRow classe exibe os campos de dados de um registro do
armazenamento de dados ao qual o DataGridView controle está anexado. Você pode
acessar as DataGridView linhas do controle usando a Rows coleção. Você pode acessar
as linhas selecionadas usando a SelectedRows coleção. O modelo de objeto a seguir
ilustra esse uso e mostra a hierarquia de DataGridViewRow herança.
Você pode derivar seus próprios tipos da DataGridViewRow classe, embora isso
normalmente não seja necessário. O DataGridView controle tem vários eventos e
propriedades relacionados a linhas para personalizar o comportamento de seus
DataGridViewRow objetos.
Confira também
Visão geral do controle DataGridView
Personalizando o controle DataGridView dos Windows Forms
Usando a linha para novos registros no controle DataGridView dos Windows
Forms
Cenários do controle DataGridView
(Windows Forms)
Artigo • 02/06/2023
Com o DataGridView controle, você pode exibir dados tabulares de uma variedade de
fontes de dados. Para usos simples, você pode preencher manualmente e DataGridView
manipular os dados diretamente por meio do controle. Normalmente, no entanto, você
armazenará seus dados em uma fonte de dados externa e associará o controle a ele por
meio de um BindingSource componente.
Este tópico descreve alguns dos cenários comuns que envolvem o DataGridView
controle.
Por exemplo, caso trabalhe com grandes quantidades de dados, você talvez queira
implementar o modo virtual para garantir a eficiência máxima. O modo virtual também
é útil para manter os valores das colunas não associadas que você exibe em conjunto
com colunas recuperadas de outra fonte de dados.
Para obter mais informações sobre o modo virtual, consulte Instruções passo a passo:
implementando o modo virtual no controle DataGridView dos Windows Forms.
Você pode fornecer sua própria pintura de linhas. Isso é útil, por exemplo, para
criar linhas com conteúdo que se estende por várias colunas. Para obter mais
informações, consulte Como personalizar a aparência de linhas no controle
DataGridView dos Windows Forms.
Você pode implementar suas próprias classes de célula e de coluna para hospedar
controles diferentes daqueles fornecidos pelos tipos de coluna internos. Para obter
mais informações, consulte Como hospedar controles em células DataGridView
dos Windows Forms.
Confira também
DataGridView
Visão geral do controle DataGridView
Diretório de código do controle
DataGridView (Windows Forms)
Artigo • 02/06/2023
7 Observação
Um link sempre pula para a parte superior do tópico no qual o exemplo de código
é encontrado.
CodeList
Como: Realizar uma ação personalizada com base em alterações em uma célula do
controle DataGridView do Windows Forms
Exemplos de seleção
Como: Definir o modo de seleção do controle DataGridView do Windows Forms
Como obter e definir a célula atual no controle DataGridView dos Windows Forms
Confira também
DataGridView
Visão geral do controle DataGridView
Funcionalidade padrão no controle
DataGridView dos Windows Forms
Artigo • 02/06/2023
Funcionalidade padrão
Por padrão, um DataGridView controle:
Além disso, o conteúdo de um DataGridView controle pode ser editado por padrão:
Se o usuário rolar até o final da grade, o usuário verá que existe uma linha para
adicionar novos registros. Quando o usuário clica nessa linha, uma nova linha é
adicionada ao DataGridView controle, com valores padrão. Quando o usuário
pressiona ESC, essa nova linha desaparece.
Quando você associa um DataGridView controle a uma fonte de dados definindo sua
DataSource propriedade, o controle:
Usa automaticamente os nomes das colunas da fonte de dados como o texto do
cabeçalho de coluna.
Confira também
DataGridView
Controle DataGridView
Tipos de coluna no controle
DataGridView dos Windows Forms
Artigo • 02/06/2023
O DataGridView controle usa vários tipos de coluna para exibir suas informações e
permitir que os usuários modifiquem ou adicionem informações.
Você também pode criar instâncias de qualquer uma das classes de coluna por conta
própria e adicioná-las à coleção retornada pela Columns propriedade. Você pode criar
essas instâncias para uso como colunas não associadas ou você pode associá-las
manualmente. As colunas associadas manualmente são úteis, por exemplo, quando você
quiser substituir uma coluna gerada automaticamente de um tipo com uma coluna de
outro tipo.
Classe Descrição
DataGridViewComboBoxColumn Usado para exibir listas suspensas nas células. Não gerado
automaticamente durante a associação. Normalmente,
associação manual de dados.
Seu tipo de coluna Você pode criar sua própria classe de coluna herdando a
personalizada DataGridViewColumn classe ou qualquer uma de suas classes
derivadas para fornecer aparência, comportamento ou
controles hospedados personalizados. Para obter mais
informações, consulte Como personalizar células e colunas no
controle Windows Forms DataGridView estendendo seu
comportamento e aparência
Esses tipos de colunas são descritos mais detalhadamente nas seções a seguir.
DataGridViewTextBoxColumn
É DataGridViewTextBoxColumn um tipo de coluna de uso geral para uso com valores
baseados em texto, como números e cadeias de caracteres. No modo de edição, um
TextBox controle é exibido na célula ativa, permitindo que os usuários modifiquem o
valor da célula.
DataGridViewCheckBoxColumn
O DataGridViewCheckBoxColumn valor é usado com e CheckState valoresBoolean.
Boolean os valores são exibidos como caixas de seleção de dois ou três estados,
dependendo do valor da ThreeState propriedade. Quando a coluna está associada a
CheckState valores, o valor da ThreeState propriedade é true por padrão.
DataGridViewImageColumn
O DataGridViewImageColumn é usado para exibir imagens. As colunas de imagem
podem ser preenchidas automaticamente de uma fonte de dados, preenchidas
manualmente para colunas não associadas ou preenchidas dinamicamente em um
manipulador para o CellFormatting evento.
Preencher uma coluna de imagem manualmente é útil quando você deseja fornecer a
funcionalidade de um DataGridViewButtonColumn, mas com uma aparência
personalizada. Você pode manipular o DataGridView.CellClick evento para responder a
cliques em uma célula de imagem.
"Imagem" que contém os locais de imagens que devem ser carregados em vez do
conteúdo binário das imagens.
DataGridViewButtonColumn
Com o DataGridViewButtonColumn, você pode exibir uma coluna de células que
contêm botões. Isso é útil quando você deseja fornecer uma maneira fácil para os
usuários de executar ações em registros específicos, como fazer um pedido ou exibir
registros filho em uma janela separada.
DataGridViewComboBoxColumn
Com o DataGridViewComboBoxColumn, você pode exibir uma coluna de células que
contêm caixas de listagem suspensas. Isso é útil para entrada de dados em campos que
podem conter apenas valores específicos, como a coluna Categoria da tabela Produtos
no banco de dados de exemplo Northwind.
Você pode preencher a lista suspensa usada para todas as células da mesma maneira
que preencheria uma ComboBox lista suspensa, manualmente por meio da coleção
retornada pela propriedade, ou associando-a Items a uma fonte de dados por meio do
e DisplayMemberValueMember das DataSourcepropriedades. Para saber mais, consulte
Controle ComboBox.
Você pode associar os valores reais da célula à fonte de dados usada pelo DataGridView
controle definindo a DataPropertyName propriedade do
System.Windows.Forms.DataGridViewComboBoxColumn.
DataGridViewLinkColumn
Com o DataGridViewLinkColumn, você pode exibir uma coluna de células que contêm
hiperlinks. Isso é útil para valores de URL na fonte de dados ou como uma alternativa
para a coluna de botão para comportamentos especiais, como abrir uma janela com
registros filho.
Nesta seção
Como: Ocultar colunas no controle DataGridView do Windows Forms
Descreve como impedir que colunas específicas apareçam no controle.
Como obter e definir a célula atual no controle DataGridView dos Windows Forms
Descreve como acessar a célula que tem foco no controle atualmente.
Referência
DataGridView
Fornece documentação de referência para o controle.
Seções relacionadas
Formatação básica e estilos no controle DataGridView dos Windows Forms
Fornece tópicos que descrevem como modificar a aparência básica do controle e a
formatação de exibição de dados da célula.
Confira também
Controle DataGridView
Tipos de coluna no controle DataGridView dos Windows Forms
Como: Ocultar colunas no controle
DataGridView do Windows Forms
Artigo • 21/06/2023
Às vezes, você desejará exibir apenas algumas das colunas que estão disponíveis em um
controle Windows FormsDataGridView. Por exemplo, talvez você queira mostrar uma
coluna de salário de funcionário aos usuários com credenciais de gerenciamento
enquanto a oculta de outros usuários. Como alternativa, talvez você queira associar o
controle a uma fonte de dados que contenha muitas colunas, apenas algumas das quais
você deseja exibir. Nesse caso, você normalmente removerá as colunas que não está
interessado em exibi-las em vez de ocultá-las.
Há suporte para esta tarefa no Visual Studio. Consulte também Como ocultar colunas no
Windows Forms controle DataGridView usando o Designer.
C#
this.dataGridView1.Columns["CustomerID"].Visible = false;
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridViewColumn.Visible
Funcionalidades de coluna, linha e célula básicas no controle DataGridView dos
Windows Forms
Como: Remover colunas geradas automaticamente de um controle DataGridView
do Windows Forms
Como: Alterar a ordem de colunas no controle DataGridView do Windows Forms
Como: Ocultar cabeçalhos no controle
DataGridView do Windows Forms
Artigo • 02/06/2023
C#
dataGridView1.ColumnHeadersVisible = false;
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridView.ColumnHeadersVisible
Funcionalidades de coluna, linha e célula básicas no controle DataGridView dos
Windows Forms
Como: Habilitar a reorganização da
coluna no controle DataGridView do
Windows Forms
Artigo • 02/06/2023
Há suporte para esta tarefa no Visual Studio. Veja também como habilitar a reordenação
de coluna no controle Windows Forms DataGridView usando o designer.
C#
dataGridView1.AllowUserToOrderColumns = true;
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridView.AllowUserToOrderColumns
Funcionalidades de coluna, linha e célula básicas no controle DataGridView dos
Windows Forms
Como: Congelar colunas no controle DataGridView do Windows Forms
Como: Congelar colunas no controle
DataGridView do Windows Forms
Artigo • 02/06/2023
Para obter esse comportamento, você pode congelar colunas no controle. Quando você
congela uma coluna, todas as colunas à esquerda (ou à direita em scripts de idioma da
direita para esquerda) são congeladas também. Colunas congeladas permanecerão no
local enquanto todas as outras colunas podem rolar.
7 Observação
A Frozen propriedade de uma coluna determina se a coluna está sempre visível dentro
da grade.
Há suporte para esta tarefa no Visual Studio. Veja também como congelar colunas no
controle Windows Forms DataGridView usando o designer.
C#
this.dataGridView1.Columns["AddToCartButton"].Frozen = true;
Compilando o código
Este exemplo requer:
Um DataGridView controle chamado dataGridView1 que contém uma coluna
chamada AddToCartButton .
Confira também
DataGridViewColumn.Frozen
DataGridView
Funcionalidades de coluna, linha e célula básicas no controle DataGridView dos
Windows Forms
Como: Habilitar a reorganização da coluna no controle DataGridView do Windows
Forms
Como: Tornar colunas somente leitura
no controle DataGridView do Windows
Forms
Artigo • 02/06/2023
Há suporte para esta tarefa no Visual Studio. Veja também como fazer colunas Read-
Only no controle Windows Forms DataGridView usando o designer.
C#
dataGridView1.Columns["CompanyName"].ReadOnly = true;
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridView.Columns
DataGridViewColumn.ReadOnly
Funcionalidades de coluna, linha e célula básicas no controle DataGridView dos
Windows Forms
Como: Evitar a adição e a exclusão de linha no controle DataGridView do Windows
Forms
Como: Evitar a adição e a exclusão de
linha no controle DataGridView do
Windows Forms
Artigo • 02/06/2023
Às vezes, você deseja impedir que os usuários insiram novas linhas de dados ou
excluam linhas existentes em seu DataGridView controle. A AllowUserToAddRows
propriedade indica se a linha para novos registros está presente na parte inferior do
controle, enquanto a propriedade indica se as AllowUserToDeleteRows linhas podem ser
removidas. O exemplo de código a seguir usa essas propriedades e também define a
ReadOnly propriedade para tornar o controle totalmente somente leitura.
Há suporte para esta tarefa no Visual Studio. Veja também como evitar a adição e a
exclusão de linha no controle datagridview Windows Forms usando o designer.
Exemplo
C#
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridView.AllowUserToAddRows
DataGridView.ReadOnly
DataGridView.AllowUserToAddRows
DataGridView.AllowUserToDeleteRows
Funcionalidades de coluna, linha e célula básicas no controle DataGridView dos
Windows Forms
Como obter e definir a célula atual no
controle DataGridView dos Windows
Forms
Artigo • 02/06/2023
7 Observação
Não é possível definir a célula atual em uma linha ou coluna que tenha sua Visible
propriedade definida como false .
C#
C#
private void setCurrentCellButton_Click(object sender, System.EventArgs
e)
{
// Set the current cell to the cell in column 1, Row 0.
this.dataGridView1.CurrentCell = this.dataGridView1[1,0];
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridView.CurrentCell
Funcionalidades de coluna, linha e célula básicas no controle DataGridView dos
Windows Forms
Modos de seleção no controle DataGridView dos Windows Forms
Como: Exibir imagens em células do
controle DataGridView do Windows
Forms
Artigo • 02/06/2023
Uma imagem ou um gráfico é um dos valores que você pode exibir em uma linha de
dados. Frequentemente, esses elementos gráficos assumem a forma de foto do
funcionário ou um logotipo da empresa.
Se a DataGridView fonte de dados do controle tiver uma coluna de imagens, elas serão
exibidas automaticamente pelo DataGridView controle.
Exemplo
C#
Compilando o código
Este exemplo requer:
Um controle DataGridView chamado dataGridView1 .
Confira também
DataGridView
Funcionalidades de coluna, linha e célula básicas no controle DataGridView dos
Windows Forms
Como personalizar a formatação de dados no controle DataGridView dos Windows
Forms
Formatação básica e estilos no controle
DataGridView dos Windows Forms
Artigo • 02/06/2023
DataGridView . Além disso, é possível modificar esses estilos dinamicamente com base
em fatores como o valor da célula manipulando o evento CellFormatting .
Nesta seção
Como: Alterar a borda e os estilos da linha de grade no tempo de execução no controle
DataGridView do Windows Forms
Descreve como configurar as propriedades DataGridView que definem a aparência da
borda do controle e as linhas de limite entre células.
Como: Definir estilos de célula padrão para o controle DataGridView do Windows Forms
Descreve como usar propriedades DataGridViewCellStyle para definir a aparência
padrão de células em linhas e colunas específicas e em todo o controle.
Referência
DataGridView
Fornece a documentação de referência para o DataGridView controle.
DataGridViewCellStyle
Fornece a documentação de referência para a DataGridViewCellStyle classe.
CellFormatting
Fornece a documentação de referência para o CellFormatting evento.
RowTemplate
Fornece a documentação de referência para a RowTemplate propriedade.
Seções relacionadas
Personalizando o controle DataGridView dos Windows Forms
Fornece tópicos que descrevem a pintura personalizada de células e linhas
DataGridView, bem como a criação de tipos de célula, coluna e linha derivados.
Confira também
Controle DataGridView
Como: Alterar a borda e os estilos da
linha de grade no tempo de execução
no controle DataGridView do Windows
Forms
Artigo • 02/06/2023
Com o DataGridView controle, você pode personalizar a aparência da borda e das linhas
de grade do controle para melhorar a experiência do usuário. Você pode modificar a cor
da linha de grade e o estilo de borda do controle além os estilos de borda para as
células no controle. Você também pode aplicar diferentes estilos de borda da célula
para células comuns, células de cabeçalho de linha e células de cabeçalho de coluna.
7 Observação
C#
this.dataGridView1.GridColor = Color.BlueViolet;
this.dataGridView1.BorderStyle = BorderStyle.Fixed3D;
C#
this.dataGridView1.CellBorderStyle =
DataGridViewCellBorderStyle.None;
this.dataGridView1.RowHeadersBorderStyle =
DataGridViewHeaderBorderStyle.Single;
this.dataGridView1.ColumnHeadersBorderStyle =
DataGridViewHeaderBorderStyle.Single;
Exemplo
C#
Compilando o código
Este exemplo requer:
Cada célula dentro do DataGridView controle pode ter seu próprio estilo, como formato
de texto, cor da tela de fundo, cor do primeiro plano e fonte. Normalmente, no entanto,
várias células compartilharão características de determinado estilo.
A classe DataGridViewCellStyle
A DataGridViewCellStyle classe contém as seguintes propriedades relacionadas ao estilo
visual:
BackColor e ForeColor
SelectionBackColor e SelectionForeColor
Font
Format e FormatProvider
NullValue e DataSourceNullValue
WrapMode
Alignment
Padding
Para obter mais informações sobre essas propriedades e outras propriedades de estilo
de célula, consulte a DataGridViewCellStyle documentação de referência e os tópicos
listados na seção Veja Também abaixo.
Usando objetos DataGridViewCellStyle
Você pode recuperar DataGridViewCellStyle objetos de várias propriedades do
DataGridView, DataGridViewColumnDataGridViewRowe classes e DataGridViewCell suas
classes derivadas. Se uma dessas propriedades ainda não tiver sido definida, recuperar
seu valor criará um novo DataGridViewCellStyle objeto. Você também pode instanciar
seus próprios DataGridViewCellStyle objetos e atribuí-los a essas propriedades.
Conforme mencionado acima, obter o valor de uma propriedade de estilo criará uma
instância automática de um novo DataGridViewCellStyle objeto se a propriedade não
tiver sido definida anteriormente. Para evitar a criação desses objetos
desnecessariamente, as classes de linha e coluna têm uma HasDefaultCellStyle
propriedade que você pode verificar para determinar se a DefaultCellStyle propriedade
foi definida. Da mesma forma, as classes de célula têm uma HasStyle propriedade que
indica se a Style propriedade foi definida.
Herança de estilo
Cada um DataGridViewCell obtém sua aparência de sua InheritedStyle propriedade. O
DataGridViewCellStyle objeto retornado por essa propriedade herda seus valores de
uma hierarquia de propriedades do tipo DataGridViewCellStyle. Essas propriedades são
listadas abaixo na ordem na qual as InheritedStyle células não cabeçalho obtêm seus
valores.
1. DataGridViewCell.Style
2. DataGridViewRow.DefaultCellStyle
4. DataGridView.RowsDefaultCellStyle
5. DataGridViewColumn.DefaultCellStyle
6. DataGridView.DefaultCellStyle
1. DataGridViewCell.Style
2. DataGridView.ColumnHeadersDefaultCellStyle ou
DataGridView.RowHeadersDefaultCellStyle
3. DataGridView.DefaultCellStyle
do tipo
Você também pode acessar os estilos herdados por colunas e linhas específicas. A
propriedade column InheritedStyle herda seus valores das propriedades a seguir.
1. DataGridViewColumn.DefaultCellStyle
2. DataGridView.DefaultCellStyle
1. DataGridViewRow.DefaultCellStyle
3. DataGridView.RowsDefaultCellStyle
4. DataGridView.DefaultCellStyle
DataGridViewCell.Style Color.Empty
DataGridViewRow.DefaultCellStyle Color.Red
DataGridView.AlternatingRowsDefaultCellStyle Color.Empty
DataGridView.RowsDefaultCellStyle Color.Empty
DataGridViewColumn.DefaultCellStyle Color.DarkBlue
DataGridView.DefaultCellStyle Color.Black
Nesse caso, o Color.Red valor da linha da célula é o primeiro valor real na lista. Isso se
torna o ForeColor valor da propriedade da célula InheritedStyle.
Ao tirar proveito da herança de estilo, você pode fornecer estilos apropriados para todo
o controle sem ter que especificar as mesmas informações em vários locais.
7 Observação
Os DataGridViewButtonColumntipos e DataGridViewCheckBoxColumn os
DataGridViewImageColumntipos também inicializam alguns valores do objeto
retornados pela propriedade de colunaDefaultCellStyle. Para obter mais informações,
consulte a documentação de referência para esses tipos.
7 Observação
7 Observação
Confira também
DataGridView
DataGridViewCellStyle
DataGridView.AlternatingRowsDefaultCellStyle
DataGridView.ColumnHeadersDefaultCellStyle
DataGridView.DefaultCellStyle
DataGridView.RowHeadersDefaultCellStyle
DataGridView.RowsDefaultCellStyle
DataGridViewBand.InheritedStyle
DataGridViewRow.InheritedStyle
DataGridViewColumn.InheritedStyle
DataGridViewBand.DefaultCellStyle
DataGridViewCell.InheritedStyle
DataGridViewCell.Style
DataGridView.CellFormatting
DataGridView.CellStyleContentChanged
DataGridView.RowPrePaint
DataGridView.RowPostPaint
Formatação básica e estilos no controle DataGridView dos Windows Forms
Como: Definir estilos de célula padrão para o controle DataGridView do Windows
Forms
Formatação de dados no controle DataGridView dos Windows Forms
Como: Definir estilos de célula padrão
para o controle DataGridView do
Windows Forms
Artigo • 02/06/2023
Com o DataGridView controle, você pode especificar estilos de célula padrão para todo
o controle e para colunas e linhas específicas. Esses padrões filtram do nível do controle
até o nível de coluna e depois até o nível de linha e o nível da célula. Se uma
propriedade específica DataGridViewCellStyle não for definida no nível da célula, a
configuração de propriedade padrão no nível da linha será usada. Se a propriedade
também não estiver definida no nível de linha, a configuração de coluna padrão será
usada. Por fim, se a propriedade também não estiver definida no nível da coluna, a
configuração padrão DataGridView será usada. Com essa configuração, você pode evitar
precisar duplicar as configurações de propriedade em vários níveis. Em cada nível, basta
especifica os estilos que são diferentes dos níveis acima. Para obter mais informações,
consulte Estilos de célula no controle DataGridView dos Windows Forms.
Há um suporte abrangente para esta tarefa no Visual Studio. Consulte também Como
definir estilos de célula padrão e formatos de dados para o controle DataGridView dos
Windows Forms usando o designer.
C#
this.dataGridView1.DefaultCellStyle.BackColor = Color.Beige;
this.dataGridView1.DefaultCellStyle.Font = new Font("Tahoma", 12);
2. Crie e inicialize novos DataGridViewCellStyle objetos para uso por várias linhas e
colunas.
C#
C#
this.dataGridView1.Rows[3].DefaultCellStyle = highlightCellStyle;
this.dataGridView1.Rows[8].DefaultCellStyle = highlightCellStyle;
this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle =
currencyCellStyle;
this.dataGridView1.Columns["TotalPrice"].DefaultCellStyle =
currencyCellStyle;
Exemplo
C#
this.dataGridView1.Rows[3].DefaultCellStyle = highlightCellStyle;
this.dataGridView1.Rows[8].DefaultCellStyle = highlightCellStyle;
this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle =
currencyCellStyle;
this.dataGridView1.Columns["TotalPrice"].DefaultCellStyle =
currencyCellStyle;
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridViewCellStyle
DataGridView.DefaultCellStyle
DataGridViewBand.DefaultCellStyle
Formatação básica e estilos no controle DataGridView dos Windows Forms
Estilos de célula no controle DataGridView dos Windows Forms
Práticas recomendadas para dimensionamento do controle DataGridView dos
Windows Forms
Como: Definir estilos de linha alternados para o controle DataGridView do
Windows Forms
Como: Formatar dados no controle
DataGridView do Windows Forms
Artigo • 21/06/2023
C#
this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle.Format = "c";
this.dataGridView1.Columns["ShipDate"].DefaultCellStyle.Format = "d";
C#
C#
this.dataGridView1.DefaultCellStyle.WrapMode =
DataGridViewTriState.True;
C#
this.dataGridView1.Columns["CustomerName"].DefaultCellStyle
.Alignment = DataGridViewContentAlignment.MiddleRight;
Exemplo
C#
Compilando o código
Esses exemplos precisam de:
Um DataGridView controle chamado dataGridView1 que contém uma coluna
chamada UnitPrice , uma coluna chamada ShipDate e uma coluna chamada
CustomerName .
Programação robusta
Para escalabilidade máxima, você deve compartilhar DataGridViewCellStyle objetos
entre várias linhas, colunas ou células que usam os mesmos estilos em vez de definir as
propriedades de estilo para cada elemento separadamente. Para obter mais
informações, consulte Práticas recomendadas para colocação em escala do controle
DataGridView dos Windows Forms.
Confira também
DataGridView.DefaultCellStyle
DataGridViewBand.DefaultCellStyle
DataGridViewCellStyle
Formatação básica e estilos no controle DataGridView dos Windows Forms
Estilos de célula no controle DataGridView dos Windows Forms
Formatação de dados no controle DataGridView dos Windows Forms
Como personalizar a formatação de dados no controle DataGridView dos Windows
Forms
Formatar tipos
Como: Definir estilos de fonte e cor no
controle DataGridView do Windows
Forms
Artigo • 02/06/2023
Há um suporte abrangente para esta tarefa no Visual Studio. Consulte também Como
definir estilos de célula padrão e formatos de dados para o controle DataGridView dos
Windows Forms usando o designer.
C#
C#
this.dataGridView1.DefaultCellStyle.ForeColor = Color.Blue;
this.dataGridView1.DefaultCellStyle.BackColor = Color.Beige;
C#
this.dataGridView1.DefaultCellStyle.SelectionForeColor = Color.Yellow;
this.dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Black;
Exemplo
C#
Compilando o código
Este exemplo requer:
Confira também
DataGridView.DefaultCellStyle
DataGridViewCellStyle
Formatação básica e estilos no controle DataGridView dos Windows Forms
Estilos de célula no controle DataGridView dos Windows Forms
Como: Definir estilos de linha alternados
para o controle DataGridView do
Windows Forms
Artigo • 02/06/2023
Há suporte para esta tarefa no Visual Studio. Veja também Como definir estilos de linha
alternada para o controle DataGridView dos Windows Forms usando o designer.
C#
this.dataGridView1.RowsDefaultCellStyle.BackColor = Color.Bisque;
this.dataGridView1.AlternatingRowsDefaultCellStyle.BackColor =
Color.Beige;
7 Observação
Programação robusta
Para obter escalabilidade máxima, você deve compartilhar DataGridViewCellStyle
objetos em várias linhas, colunas ou células que usam os mesmos estilos, em vez de
definir as propriedades de estilo para cada elemento separadamente. Para obter mais
informações, consulte Práticas recomendadas para colocação em escala do controle
DataGridView dos Windows Forms.
Confira também
DataGridView.AlternatingRowsDefaultCellStyle
DataGridView.RowsDefaultCellStyle
DataGridView
DataGridViewCellStyle
Formatação básica e estilos no controle DataGridView dos Windows Forms
Estilos de célula no controle DataGridView dos Windows Forms
Práticas recomendadas para dimensionamento do controle DataGridView dos
Windows Forms
Como definir estilos de fonte e cor no controle DataGridView do Windows Forms
Como: Usar o modelo da linha para
personalizar linhas no controle
DataGridView do Windows Forms
Artigo • 02/06/2023
O DataGridView controle usa o modelo de linha como base para todas as linhas que ele
adiciona ao controle por meio da associação de dados ou quando você chama o
DataGridViewRowCollection.Add método sem especificar uma linha existente a ser
usada.
Há algumas situações em que você deve usar o modelo de linha para obter um efeito
específico. Por exemplo, as informações de altura da linha não podem ser armazenadas
em um DataGridViewCellStyle, portanto, você deve usar um modelo de linha para alterar
a altura padrão usada por todas as linhas. O modelo de linha também é útil quando
você cria suas próprias classes derivadas DataGridViewRow e deseja que seu tipo
personalizado seja usado quando novas linhas forem adicionadas ao controle.
7 Observação
O modelo de linha é usado somente quando linhas são adicionadas. Você não
pode alterar as linhas existentes alterando o modelo de linha.
C#
Confira também
DataGridView
DataGridViewCellStyle
DataGridViewRow
DataGridView.RowTemplate
Formatação básica e estilos no controle DataGridView dos Windows Forms
Estilos de célula no controle DataGridView dos Windows Forms
Exibindo dados no controle
DataGridView dos Windows Forms
Artigo • 02/06/2023
Além disso, você pode exibir seus dados usando os formatos padrão (como o formato
de moeda) ou personalizar a formatação da exibição para apresentar os dados como
desejar (como alterar a cor da tela de fundo para números negativos ou substituir os
valores de cadeia de caracteres por imagens correspondentes).
Nesta seção
Modos de exibição dos dados no controle DataGridView dos Windows Forms
Descreve as opções para popular o controle com os dados.
Referência
DataGridView
Fornece documentação de referência para o DataGridView controle .
DataGridView.DataSource
Fornece a documentação de referência para a DataSource propriedade .
BindingSource
Fornece documentação de referência para o BindingSource componente.
Seções relacionadas
Entrada de dados no controle DataGridView dos Windows Forms
Fornece tópicos que descrevem como alterar os maneira como os usuários adicionam e
modificam dados no controle.
Confira também
Controle DataGridView
Tipos de coluna no controle DataGridView dos Windows Forms
Modos de exibição dos dados no
controle DataGridView dos Windows
Forms
Artigo • 21/06/2023
O DataGridView controle pode exibir dados em três modos distintos: associado, não
associado e virtual. Escolha o modo mais adequado com base em suas necessidades.
Não Associado
O modo não associado é adequado para exibir quantidades de dados relativamente
pequenas que você gerencia programaticamente. Você não anexa o DataGridView
controle diretamente a uma fonte de dados como no modo associado. Em vez disso,
você deve preencher o controle por conta própria, normalmente usando o
DataGridViewRowCollection.Add método .
O modo não associado pode ser particularmente útil para dados estáticos, somente
leitura ou quando você desejar fornecer seu próprio código que interage com um
armazenamento de dados externo. Quando quiser que os usuários interajam com uma
fonte de dados externa, no entanto, você normalmente usará o modo associado.
Bound
O modo associado é adequado para gerenciar dados usando a interação automática
com o armazenamento de dados. Você pode anexar o DataGridView controle
diretamente à fonte de dados definindo a DataSource propriedade . Quando o controle
for associado aos dados, as linhas de dados serão enviadas e recebidas sem a
necessidade de gerenciamento explícito da sua parte. Quando a AutoGenerateColumns
propriedade for true , cada coluna na fonte de dados fará com que uma coluna
correspondente seja criada no controle . Se preferir criar suas próprias colunas, você
poderá definir essa propriedade como false e usar a DataPropertyName propriedade
para associar cada coluna ao configurá-la. Isso é útil quando você deseja usar um tipo
de coluna diferente dos tipos que são gerados por padrão. Para obter mais informações,
consulte Tipos de coluna no controle DataGridView dos Windows Forms.
Para obter um exemplo que usa um controle associadoDataGridView, consulte Passo a
passo: validando dados no controle DataGridView Windows Forms.
Não há suporte para a classificação por colunas não associadas no modo associado. Se
criar uma coluna não associada no modo associado que contenha os valores editáveis
pelo usuário, você deverá implementar o modo virtual para manter esses valores
quando o controle for classificado por uma coluna associada.
Máquina
Com o modo virtual, você pode implementar suas próprias operações de
gerenciamento de dados. Isso é necessário para manter os valores das colunas não
associadas no modo associado quando o controle for classificado por colunas
associadas. No entanto, o uso principal do modo virtual é otimizar o desempenho ao
interagir com grandes quantidades de dados.
Quando estiver implementando o modo virtual, você precisará controlar quando uma
nova linha for necessária no modelo de dados e o momento para reverter a adição da
nova linha. A implementação dessa funcionalidade exata dependerá da implementação
do modelo de dados e da semântica de transação do modelo de dados; se o escopo de
confirmação está no nível da célula ou da linha.
Para obter mais informações sobre o modo virtual, consulte Como implementar o modo
virtual no controle DataGridView dos Windows Forms. Para obter um exemplo que
mostra como usar os eventos de modo virtual, consulte Instruções passo a passo:
implementando o modo virtual no controle DataGridView dos Windows Forms.
Confira também
DataGridView
DataGridView.DataSource
DataGridView.VirtualMode
BindingSource
DataGridViewColumn.DataPropertyName
Exibindo dados no controle DataGridView dos Windows Forms
Tipos de coluna no controle DataGridView dos Windows Forms
Passo a passo: Criar um controle não associado DataGridView do Windows Forms
Como associar dados ao controle DataGridView do Windows Forms
Modo virtual no controle DataGridView dos Windows Forms
Passo a passo: Implementando o modo virtual no controle DataGridView do
Windows Forms
Formatação de dados no controle
DataGridView dos Windows Forms
Artigo • 02/06/2023
7 Observação
Se uma cadeia de caracteres de formato estiver em vigor para a célula, ela
substituirá a Value alteração do valor da propriedade, a menos que você defina a
FormattingApplied propriedade como true .
Confira também
DataGridView
DataGridViewCellStyle
Exibindo dados no controle DataGridView dos Windows Forms
Estilos de célula no controle DataGridView dos Windows Forms
Como formatar dados no controle DataGridView dos Windows Forms
Como personalizar a formatação de dados no controle DataGridView dos Windows
Forms
Passo a passo: Criar um controle não
associado DataGridView do Windows
Forms
Artigo • 21/06/2023
Você pode querer exibir com frequência dados tabulares que não se originam de um
banco de dados. Por exemplo, você talvez queira mostrar o conteúdo de uma matriz
bidimensional de cadeias de caracteres. A DataGridView classe fornece uma maneira
fácil e altamente personalizável de exibir dados sem associação a uma fonte de dados.
Este passo a passo mostra como preencher um DataGridView controle e gerenciar a
adição e exclusão de linhas no modo "não associado". Por padrão, o usuário pode
adicionar novas linhas. Para evitar a adição de linha, defina que a AllowUserToAddRows
propriedade é false .
Para copiar o código deste tópico como uma única lista, consulte Como criar um
controle DataGridView não associado do Windows Forms.
Criando o formulário
C#
using System;
using System.Drawing;
using System.Windows.Forms;
C#
[STAThreadAttribute()]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
C#
buttonPanel.Controls.Add(addNewRowButton);
buttonPanel.Controls.Add(deleteRowButton);
buttonPanel.Height = 50;
buttonPanel.Dock = DockStyle.Bottom;
this.Controls.Add(this.buttonPanel);
}
C#
private void SetupDataGridView()
{
this.Controls.Add(songsDataGridView);
songsDataGridView.ColumnCount = 5;
songsDataGridView.ColumnHeadersDefaultCellStyle.BackColor =
Color.Navy;
songsDataGridView.ColumnHeadersDefaultCellStyle.ForeColor =
Color.White;
songsDataGridView.ColumnHeadersDefaultCellStyle.Font =
new Font(songsDataGridView.Font, FontStyle.Bold);
songsDataGridView.Name = "songsDataGridView";
songsDataGridView.Location = new Point(8, 8);
songsDataGridView.Size = new Size(500, 250);
songsDataGridView.AutoSizeRowsMode =
DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
songsDataGridView.ColumnHeadersBorderStyle =
DataGridViewHeaderBorderStyle.Single;
songsDataGridView.CellBorderStyle =
DataGridViewCellBorderStyle.Single;
songsDataGridView.GridColor = Color.Black;
songsDataGridView.RowHeadersVisible = false;
songsDataGridView.SelectionMode =
DataGridViewSelectionMode.FullRowSelect;
songsDataGridView.MultiSelect = false;
songsDataGridView.Dock = DockStyle.Fill;
songsDataGridView.CellFormatting += new
DataGridViewCellFormattingEventHandler(
songsDataGridView_CellFormatting);
}
C#
private void PopulateDataGridView()
{
songsDataGridView.Rows.Add(row0);
songsDataGridView.Rows.Add(row1);
songsDataGridView.Rows.Add(row2);
songsDataGridView.Rows.Add(row3);
songsDataGridView.Rows.Add(row4);
songsDataGridView.Rows.Add(row5);
songsDataGridView.Rows.Add(row6);
songsDataGridView.Columns[0].DisplayIndex = 3;
songsDataGridView.Columns[1].DisplayIndex = 4;
songsDataGridView.Columns[2].DisplayIndex = 0;
songsDataGridView.Columns[3].DisplayIndex = 1;
songsDataGridView.Columns[4].DisplayIndex = 2;
}
Quando o evento do Click botão Adicionar é acionado, uma nova linha vazia é
adicionada ao DataGridView.
C#
public Form1()
{
this.Load += new EventHandler(Form1_Load);
}
Testando o aplicativo
Agora, é possível testar o formulário para garantir que ele se comporta da forma
esperada.
Próximas etapas
Esse aplicativo fornece uma compreensão básica dos DataGridView recursos do
controle. Você pode personalizar a aparência e o DataGridView comportamento do
controle de várias maneiras:
Alterar estilos de borda e cabeçalho. Para obter mais informações, consulte Como
alterar os estilos de borda e linha de grade no controle DataGridView dos
Windows Forms.
Personalize a aparência das células. Para obter mais informações, consulte Como
personalizar a aparência de células no controle DataGridView dos Windows Forms
e Como definir estilos de célula padrão no controle DataGridView dos Windows
Forms.
Confira também
DataGridView
Exibindo dados no controle DataGridView dos Windows Forms
Como: Criar um controle não associado DataGridView do Windows Forms
Modos de exibição dos dados no controle DataGridView dos Windows Forms
Como: Criar um controle não associado
DataGridView do Windows Forms
Artigo • 02/06/2023
Para ver uma explicação completa desse exemplo de código, consulte Passo a passo:
criando um controle DataGridView de Windows Forms não Windows.
Exemplo
C#
using System;
using System.Drawing;
using System.Windows.Forms;
public Form1()
{
this.Load += new EventHandler(Form1_Load);
}
buttonPanel.Controls.Add(addNewRowButton);
buttonPanel.Controls.Add(deleteRowButton);
buttonPanel.Height = 50;
buttonPanel.Dock = DockStyle.Bottom;
this.Controls.Add(this.buttonPanel);
}
songsDataGridView.ColumnCount = 5;
songsDataGridView.ColumnHeadersDefaultCellStyle.BackColor =
Color.Navy;
songsDataGridView.ColumnHeadersDefaultCellStyle.ForeColor =
Color.White;
songsDataGridView.ColumnHeadersDefaultCellStyle.Font =
new Font(songsDataGridView.Font, FontStyle.Bold);
songsDataGridView.Name = "songsDataGridView";
songsDataGridView.Location = new Point(8, 8);
songsDataGridView.Size = new Size(500, 250);
songsDataGridView.AutoSizeRowsMode =
DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
songsDataGridView.ColumnHeadersBorderStyle =
DataGridViewHeaderBorderStyle.Single;
songsDataGridView.CellBorderStyle =
DataGridViewCellBorderStyle.Single;
songsDataGridView.GridColor = Color.Black;
songsDataGridView.RowHeadersVisible = false;
songsDataGridView.SelectionMode =
DataGridViewSelectionMode.FullRowSelect;
songsDataGridView.MultiSelect = false;
songsDataGridView.Dock = DockStyle.Fill;
songsDataGridView.CellFormatting += new
DataGridViewCellFormattingEventHandler(
songsDataGridView_CellFormatting);
}
songsDataGridView.Rows.Add(row0);
songsDataGridView.Rows.Add(row1);
songsDataGridView.Rows.Add(row2);
songsDataGridView.Rows.Add(row3);
songsDataGridView.Rows.Add(row4);
songsDataGridView.Rows.Add(row5);
songsDataGridView.Rows.Add(row6);
songsDataGridView.Columns[0].DisplayIndex = 3;
songsDataGridView.Columns[1].DisplayIndex = 4;
songsDataGridView.Columns[2].DisplayIndex = 0;
songsDataGridView.Columns[3].DisplayIndex = 1;
songsDataGridView.Columns[4].DisplayIndex = 2;
}
[STAThreadAttribute()]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
Passo a passo: Criar um controle não associado DataGridView do Windows Forms
Exibindo dados no controle DataGridView dos Windows Forms
Modos de exibição dos dados no controle DataGridView dos Windows Forms
Como associar dados ao controle
Windows Forms DataGridView
Artigo • 21/06/2023
O Visual Studio tem amplo suporte para associação de dados ao controle DataGridView.
Para obter mais informações, consulte Como associar dados ao controle Windows
Forms DataGridView usando o Designer.
Exemplo
Este exemplo de código completo recupera dados de um banco de dados para
preencher um controle DataGridView em um formulário do Windows. O formulário
também tem botões para recarregar dados e enviar alterações ao banco de dados.
C#
using System;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.Windows.Forms;
namespace WindowsFormsApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}
public class Form1 : Form
{
private DataGridView dataGridView1 = new DataGridView();
private BindingSource bindingSource1 = new BindingSource();
private SqlDataAdapter dataAdapter = new SqlDataAdapter();
private Button reloadButton = new Button();
private Button submitButton = new Button();
[STAThread()]
public static void Main()
{
Application.Run(new Form1());
}
reloadButton.Text = "Reload";
submitButton.Text = "Submit";
reloadButton.Click += new EventHandler(ReloadButton_Click);
submitButton.Click += new EventHandler(SubmitButton_Click);
Confira também
DataGridView
DataGridView.DataSource
BindingSource
Exibir dados no controle Windows Forms DataGridView
Proteger informações de conexão
Como: Gerar automaticamente colunas
em um controle DataGridView
associado a dados do Windows Forms
Artigo • 02/06/2023
O exemplo de código a seguir demonstra como exibir colunas de uma fonte de dados
associada em um DataGridView controle. Quando o valor da AutoGenerateColumns
propriedade é true (o padrão), um DataGridViewColumn é criado para cada coluna na
tabela de fonte de dados.
Exemplo
C#
Compilando o código
Este exemplo requer:
C#
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = customersDataSet;
dataGridView1.Columns.Remove("Fax");
C#
dataGridView1.Columns["CustomerID"].Visible = false;
Exemplo
C#
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridView.AutoGenerateColumns
DataGridView.Columns
DataGridViewColumnCollection.Remove
DataGridViewColumn.Visible
Exibindo dados no controle DataGridView dos Windows Forms
Como: Alterar a ordem de colunas no
controle DataGridView do Windows
Forms
Artigo • 02/06/2023
Quando você usa um DataGridView para exibir dados de uma fonte de dados, as
colunas no esquema da fonte de dados às vezes não aparecem na ordem em que você
gostaria de exibi-los. Você pode alterar a ordem exibida das colunas usando a
DisplayIndex propriedade da DataGridViewColumn classe.
Há suporte para esta tarefa no Visual Studio. Veja também como alterar a ordem das
colunas no controle Windows Forms DataGridView usando o designer.
Exemplo
C#
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridViewColumn
DataGridViewColumn.DisplayIndex
DataGridViewColumn.Visible
Exibindo dados no controle DataGridView dos Windows Forms
Como associar dados ao controle DataGridView do Windows Forms
Como: Adicionar uma coluna não
associada a um controle DataGridView
do Windows Forms associado a dados
Artigo • 21/06/2023
O exemplo de código a seguir demonstra como criar uma coluna não associada dos
botões de Detalhes para exibir uma tabela filho relacionada a uma linha específica em
uma tabela pai quando você implementa um cenário mestre/de detalhes. Para
responder a cliques de botão, implemente um DataGridView.CellClick manipulador de
eventos que exibe um formulário que contém a tabela filho.
Há suporte para esta tarefa no Visual Studio. Consulte também Como adicionar e
remover colunas no Windows Forms controle DataGridView usando o Designer.
Exemplo
C#
// Use the Text property for the button text for all cells rather
// than using each cell's value as the text for its own button.
buttonColumn.UseColumnTextForButtonValue = true;
Confira também
DataGridView
Exibindo dados no controle DataGridView dos Windows Forms
Modos de exibição dos dados no controle DataGridView dos Windows Forms
Como associar objetos a controles
DataGridView dos Windows Forms
Artigo • 02/06/2023
Exemplo
C#
using System;
using System.Windows.Forms;
public enum Title
{
King,
Sir
};
public class EnumsAndComboBox : Form
{
private DataGridView dataGridView1 = new DataGridView();
private BindingSource bindingSource1 = new BindingSource();
public EnumsAndComboBox()
{
this.Load += new System.EventHandler(EnumsAndComboBox_Load);
}
dataGridView1.Columns.Add(CreateComboBoxWithEnums());
// Initialize and add a text box column.
DataGridViewColumn column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Name";
column.Name = "Knight";
dataGridView1.Columns.Add(column);
DataGridViewComboBoxColumn CreateComboBoxWithEnums()
{
DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
combo.DataSource = Enum.GetValues(typeof(Title));
combo.DataPropertyName = "Title";
combo.Name = "Title";
return combo;
}
#region "business object"
private class Knight
{
private string hisName;
private bool good;
private Title hisTitle;
public Knight()
{
hisTitle = Title.Sir;
hisName = "<enter name>";
good = true;
}
set
{
hisName = value;
}
}
[STAThread]
public static void Main()
{
Application.Run(new EnumsAndComboBox());
}
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
Exibindo dados no controle DataGridView dos Windows Forms
Como acessar objetos associados às linhas de DataGridView dos Windows Forms
Como acessar objetos associados a
linhas DataGridView dos Windows
Forms
Artigo • 21/06/2023
Se esses objetos contiverem informações adicionais e o código que você deseja acessar,
será possível alcançá-lo por meio de objetos de linha. No exemplo de código a seguir,
os usuários podem selecionar várias linhas e clicar em um botão para enviar uma fatura
para cada um dos clientes correspondentes.
C#
Exemplo
O exemplo de código completo inclui uma implementação simples Customer e associa o
DataGridView a um ArrayList que contém alguns Customer objetos. O Click manipulador
de eventos do System.Windows.Forms.Button deve acessar os Customer objetos por
meio das linhas, pois a coleção de clientes não está acessível fora do manipulador de
Form.Load eventos.
C#
using System;
using System.Windows.Forms;
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridViewRow
DataGridViewRow.DataBoundItem
Exibindo dados no controle DataGridView dos Windows Forms
Como associar objetos a controles DataGridView dos Windows Forms
Como: Acessar objetos de acesso em
uma lista suspensa
DataGridViewComboBoxCell do
Windows Forms
Artigo • 02/06/2023
comercial em si. Portanto, se o tipo de objeto comercial não estiver sob seu controle,
você deverá adicionar essa propriedade estendendo o tipo por meio de herança.
C#
DataGridViewComboBoxColumn assignedToColumn =
new DataGridViewComboBoxColumn();
// Populate the combo box drop-down list with Employee objects.
foreach (Employee e in employees) assignedToColumn.Items.Add(e);
C#
assignedToColumn.DisplayMember = "Name";
assignedToColumn.ValueMember = "Self";
C#
C#
Exemplo
O exemplo completo demonstra o uso de objetos de negócios em uma lista suspensa.
No exemplo, um DataGridView controle está associado a uma coleção de Task objetos.
Cada objeto Task tem uma propriedade AssignedTo que indica o objeto Employee
atualmente atribuído à tarefa. A coluna Assigned To exibe o de valor da propriedade
Name para cada funcionário atribuído ou "não atribuído", se o valor da propriedade
2. Clique em Generate Report para exibir as atribuições atuais. Isso demonstra que
uma alteração à coluna Assigned To atualiza automaticamente a coleção tasks .
C#
using System;
using System.Text;
using System.Collections.Generic;
using System.Windows.Forms;
[STAThread]
public static void Main()
{
Application.Run(new Form1());
}
public Form1()
{
dataGridView1.Dock = DockStyle.Fill;
dataGridView1.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.AllCells;
reportButton.Text = "Generate Report";
reportButton.Dock = DockStyle.Top;
reportButton.Click += new EventHandler(reportButton_Click);
Controls.Add(dataGridView1);
Controls.Add(reportButton);
Load += new EventHandler(Form1_Load);
Text = "DataGridViewComboBoxColumn Demo";
}
DataGridViewComboBoxColumn assignedToColumn =
new DataGridViewComboBoxColumn();
dataGridView1.Columns.Add(idColumn);
dataGridView1.Columns.Add(assignedToColumn);
dataGridView1.Columns.Add(buttonColumn);
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridViewComboBoxColumn
DataGridViewComboBoxColumn.Items
DataGridViewComboBoxColumn.DataSource
DataGridViewComboBoxColumn.ValueMember
DataGridViewComboBoxCell
DataGridViewComboBoxCell.Items
DataGridViewComboBoxCell.DataSource
DataGridViewComboBoxCell.ValueMember
DataGridViewCell.Value
ComboBox
Exibindo dados no controle DataGridView dos Windows Forms
Passo a passo: Criar um formulário
mestre/de detalhes usando dois
controles DataGridView do Windows
Forms
Artigo • 02/06/2023
Para copiar o código neste tópico como uma única listagem, consulte Como criar um
formulário mestre/detalhes usando dois controles DataGridView dos Windows Forms.
Pré-requisitos
Para concluir este passo a passo, você precisará de:
Criando o formulário
C#
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new Form1());
}
this.Controls.Add(splitContainer1);
this.Load += new System.EventHandler(Form1_Load);
this.Text = "DataGridView master/detail demo";
}
C#
C#
// Create a DataSet.
DataSet data = new DataSet();
data.Locale =
System.Globalization.CultureInfo.InvariantCulture;
C#
Testando o aplicativo
Agora, é possível testar o formulário para garantir que ele se comporta da forma
esperada.
Próximas etapas
Esse aplicativo fornece uma compreensão básica das DataGridView funcionalidades do
controle. Você pode personalizar a aparência e o DataGridView comportamento do
controle de várias maneiras:
Alterar estilos de borda e cabeçalho. Para obter mais informações, consulte Como
alterar os estilos de borda e linha de grade no controle DataGridView dos
Windows Forms.
Manipule grandes conjuntos de dados usando o modo virtual. Para obter mais
informações, consulte Passo a passo: implementando o modo virtual no controle
DataGridView dos Windows Forms.
Personalize a aparência das células. Para obter mais informações, consulte Como
personalizar a aparência de células no controle DataGridView dos Windows Forms
e Como definir estilos de célula padrão no controle DataGridView dos Windows
Forms.
Confira também
DataGridView
BindingSource
Exibindo dados no controle DataGridView dos Windows Forms
Como: Criar um formulário mestre/de detalhes usando dois controles
DataGridView do Windows Forms
Protegendo informações de conexão
Como: Criar um formulário mestre/de
detalhes usando dois controles
DataGridView do Windows Forms
Artigo • 02/06/2023
Para uma explicação completa desse código de exemplo, consulte Instruções passo a
passo: criando um formulário mestre/detalhes usando dois controles DataGridView dos
Windows Forms.
Exemplo
C#
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new Form1());
}
// Initializes the form.
public Form1()
{
masterDataGridView.Dock = DockStyle.Fill;
detailsDataGridView.Dock = DockStyle.Fill;
this.Controls.Add(splitContainer1);
this.Load += new System.EventHandler(Form1_Load);
this.Text = "DataGridView master/detail demo";
}
// Create a DataSet.
DataSet data = new DataSet();
data.Locale = System.Globalization.CultureInfo.InvariantCulture;
Compilando o código
Este exemplo requer:
As células na Priority coluna exibem imagens no lugar dos valores de célula textuais
correspondentes. A Value propriedade do é usada para obter o valor da célula textual e
para definir o valor de DataGridViewCellFormattingEventArgs exibição da imagem
correspondente.
Exemplo
C#
using System;
using System.Drawing;
using System.Windows.Forms;
public Form1()
{
// Initialize the images.
try
{
highPriImage = new Bitmap("highPri.bmp");
mediumPriImage = new Bitmap("mediumPri.bmp");
lowPriImage = new Bitmap("lowPri.bmp");
}
catch (ArgumentException)
{
MessageBox.Show("The Priority column requires Bitmap images " +
"named highPri.bmp, mediumPri.bmp, and lowPri.bmp " +
"residing in the same directory as the executable file.");
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView.DefaultCellStyle
DataGridViewBand.DefaultCellStyle
DataGridView
DataGridViewCellStyle
Bitmap
Exibindo dados no controle DataGridView dos Windows Forms
Como formatar dados no controle DataGridView dos Windows Forms
Estilos de célula no controle DataGridView dos Windows Forms
Formatação de dados no controle DataGridView dos Windows Forms
Redimensionando colunas e linhas no
controle DataGridView dos Windows
Forms
Artigo • 02/06/2023
Por padrão, os usuários poderão arrastar os divisores de linha, coluna e cabeçalho com
o mouse para mostrar mais informações. Os usuários também podem clicar duas vezes
em um divisor para redimensionar automaticamente a faixa da linha, coluna ou
cabeçalho associado ao conteúdo.
Nesta seção
Dimensionando opções no controle DataGridView dos Windows Forms
Descreve as opções para dimensionar linhas, colunas e cabeçalhos. Também fornece
detalhes sobre os métodos e propriedades relacionados ao dimensionamento e
descreve os cenários comuns de uso.
Referência
DataGridView
Fornece documentação de referência para o DataGridView controle.
Confira também
Controle DataGridView
Dimensionando opções no controle
DataGridView dos Windows Forms
Artigo • 02/06/2023
Ocorrência Descrição
A tabela a seguir mostra cenários que você pode usar para ajustar o comportamento
padrão ou para usar opções específicas de dimensionamento para atingir efeitos
específicos.
Cenário Implementação
Cenário Implementação
Use o modo de Defina a AutoSizeMode propriedade da última coluna como Fill e use
preenchimento de outras opções de dimensionamento para as outras colunas. Se as
coluna para evitar a outras colunas usarem muito espaço disponível, defina a
exibição da tela de MinimumWidth propriedade da última coluna.
fundo do controle.
Exiba uma coluna de Defina AutoSizeMode como None e Resizable para False para a coluna.
largura fixa, como um Inicialize sua largura definindo a Width propriedade ou chamando o
ícone ou uma coluna de método de controle AutoResizeColumn depois de preencher o
ID. controle com os dados.
AllowUserToResizeColumns
AllowUserToResizeRows
ColumnHeadersHeightSizeMode
RowHeadersWidthSizeMode
Dimensionamento automático
Há dois tipos de dimensionamento automático no DataGridView controle: modo de
preenchimento de coluna e dimensionamento automático baseado em conteúdo.
7 Observação
ColumnHeadersHeightSizeMode
RowHeadersWidthSizeMode
AutoSizeColumnsMode
AutoSizeRowsMode
automaticamente para ajustar um valor de célula grande, a coluna oculta não mudará
seu tamanho se a linha que contém o valor da célula grande for excluída. O
dimensionamento automático não ocorre quando a visibilidade é alterada, portanto,
alterar a propriedade de coluna Visible de volta para true não irá forçá-la a recalcular
seu tamanho com base em seu conteúdo atual.
Redimensionamento programático
Quando o dimensionamento automático está desabilitado, você pode definir
programaticamente a largura ou a altura exata de linhas, colunas ou cabeçalhos usando
as propriedades a seguir:
DataGridView.RowHeadersWidth
DataGridView.ColumnHeadersHeight
DataGridViewRow.Height
DataGridViewColumn.Width
AutoResizeColumn
AutoResizeColumns
AutoResizeColumnHeadersHeight
AutoResizeRow
AutoResizeRows
AutoResizeRowHeadersWidth
Personalizando o comportamento de
dimensionamento baseado em conteúdo
Você pode personalizar comportamentos de dimensionamento ao trabalhar com tipos
de célula, linha e coluna derivadas DataGridView , substituindo os
DataGridViewCell.GetPreferredSize métodos, DataGridViewRow.GetPreferredHeight ou
DataGridViewColumn.GetPreferredWidth , ou chamando sobrecargas de método de
redimensionamento protegido em um controle derivado DataGridView . As sobrecargas
de método de redimensionamento protegidas são projetadas para funcionar em pares
para atingir uma razão ideal de altura para largura da célula, evitando células
excessivamente altas ou largas. Por exemplo, se você chamar a
AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) sobrecarga do AutoResizeRows
Cada coluna pode ter um modo de tamanho diferente, mas todas as colunas com um
modo de tamanho de Fill irão compartilhar a largura da área de exibição que não é
usada pelas outras colunas. Essa largura é dividida entre as colunas de modo de
preenchimento em proporções relativas aos seus FillWeight valores de propriedade. Por
exemplo, se duas colunas tiverem FillWeight valores de 100 e 200, a primeira coluna
será metade de largura da segunda coluna.
Exemplo
Descrição
Usando os valores apropriados para as AutoSizeMode Propriedades, MinimumWidth ,
FillWeightResizable e, você pode personalizar os comportamentos de dimensionamento
de coluna para vários cenários diferentes.
using System;
using System.ComponentModel;
using System.Reflection;
using System.Windows.Forms;
public Form1()
{
dataGridView1.Dock = DockStyle.Fill;
Controls.Add(dataGridView1);
InitializeDataGridView();
Width *= 2;
Text = "Column Fill-Mode Demo";
}
DataGridViewColumnEventHandler(dataGridView1_ColumnWidthChanged);
dataGridView1.CurrentCellDirtyStateChanged +=
new EventHandler(dataGridView1_CurrentCellDirtyStateChanged);
dataGridView1.DataError +=
new DataGridViewDataErrorEventHandler(dataGridView1_DataError);
dataGridView1.CellEndEdit +=
new DataGridViewCellEventHandler(dataGridView1_CellEndEdit);
dataGridView1.CellValueChanged +=
new
DataGridViewCellEventHandler(dataGridView1_CellValueChanged);
}
typeof(ArgumentException).IsAssignableFrom(e.Exception.GetType())))
{
dataGridView1.Rows[e.RowIndex].ErrorText =
"The specified value is invalid.";
e.Cancel = true;
}
else
{
// Rethrow any exceptions that aren't related to the user input.
e.ThrowException = true;
}
}
Comentários
Para usar esse aplicativo de demonstração:
Compilando o código
Este exemplo requer:
C#
DataGridViewTextBoxColumn idColumn =
new DataGridViewTextBoxColumn();
idColumn.HeaderText = "ID";
idColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
idColumn.Resizable = DataGridViewTriState.False;
idColumn.ReadOnly = true;
idColumn.Width = 20;
C#
DataGridViewTextBoxColumn titleColumn =
new DataGridViewTextBoxColumn();
titleColumn.HeaderText = "Title";
titleColumn.AutoSizeMode =
DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;
Para criar colunas de modo de preenchimento para
valores de tamanho e importância variáveis
Defina a DataGridView.AutoSizeColumnsMode propriedade para Fill definir o
modo de dimensionamento para todas as colunas que não substituem esse valor.
Defina as FillWeight propriedades das colunas como valores proporcionais às
larguras médias de conteúdo. Defina as MinimumWidth propriedades de colunas
importantes para garantir a exibição parcial do conteúdo.
C#
dataGridView1.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.Fill;
DataGridViewTextBoxColumn subTitleColumn =
new DataGridViewTextBoxColumn();
subTitleColumn.HeaderText = "Subtitle";
subTitleColumn.MinimumWidth = 50;
subTitleColumn.FillWeight = 100;
DataGridViewTextBoxColumn summaryColumn =
new DataGridViewTextBoxColumn();
summaryColumn.HeaderText = "Summary";
summaryColumn.MinimumWidth = 50;
summaryColumn.FillWeight = 200;
DataGridViewTextBoxColumn contentColumn =
new DataGridViewTextBoxColumn();
contentColumn.HeaderText = "Content";
contentColumn.MinimumWidth = 50;
contentColumn.FillWeight = 300;
Exemplo
O exemplo de código completo a seguir fornece um aplicativo de demonstração que
pode ajudá-lo a entender as opções de dimensionamento descritas neste tópico.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
public Form1()
{
dataGridView1.Dock = DockStyle.Fill;
Controls.Add(dataGridView1);
Width *= 2;
Text = "DataGridView Sizing Scenarios";
}
DataGridViewTextBoxColumn titleColumn =
new DataGridViewTextBoxColumn();
titleColumn.HeaderText = "Title";
titleColumn.AutoSizeMode =
DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;
dataGridView1.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.Fill;
DataGridViewTextBoxColumn subTitleColumn =
new DataGridViewTextBoxColumn();
subTitleColumn.HeaderText = "Subtitle";
subTitleColumn.MinimumWidth = 50;
subTitleColumn.FillWeight = 100;
DataGridViewTextBoxColumn summaryColumn =
new DataGridViewTextBoxColumn();
summaryColumn.HeaderText = "Summary";
summaryColumn.MinimumWidth = 50;
summaryColumn.FillWeight = 200;
DataGridViewTextBoxColumn contentColumn =
new DataGridViewTextBoxColumn();
contentColumn.HeaderText = "Content";
contentColumn.MinimumWidth = 50;
contentColumn.FillWeight = 300;
dataGridView1.Columns.AddRange(new DataGridViewTextBoxColumn[] {
idColumn, titleColumn, subTitleColumn,
summaryColumn, contentColumn });
dataGridView1.Rows.Add(new String[] { "1",
"A Short Title", "A Longer SubTitle",
"A short description of the main point.",
"The full contents of the topic, with detailed examples." });
base.OnLoad(e);
}
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridViewColumn.AutoSizeMode
DataGridViewAutoSizeColumnMode
DataGridViewColumn.Resizable
DataGridViewColumn.ReadOnly
DataGridViewColumn.Width
DataGridViewColumn.FillWeight
DataGridViewColumn.MinimumWidth
Como: Redimensionar de forma
programática as células para que o
conteúdo caiba no controle
DataGridView do Windows Forms
Artigo • 02/06/2023
Exemplo
C#
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
public ProgrammaticSizing()
{
InitializeComponent();
AddDirections();
this.Load += new EventHandler(InitializeDataGridView);
AddButton(button1, "Reset",
new EventHandler(ResetToDisorder));
AddButton(button2, "Change Column 3 Header",
new EventHandler(ChangeColumn3Header));
AddButton(button3, "Change Meatloaf Recipe",
new EventHandler(ChangeMeatloafRecipe));
AddButton(button10, "Change Restaurant 2",
new EventHandler(ChangeRestaurant));
AddButtonsForProgrammaticResizing();
}
this.AutoSize = true;
this.Controls.Add(this.flowLayoutPanel1);
this.Text = this.GetType().Name;
}
flowLayoutPanel1.Controls.Add(directions);
}
#endregion
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new ProgrammaticSizing());
}
AddColumns();
PopulateRows();
shortMode = false;
boringRecipe = true;
}
DataGridViewCellStyle columnHeaderStyle =
new DataGridViewCellStyle();
columnHeaderStyle.BackColor = Color.Aqua;
columnHeaderStyle.Font = new Font("Verdana", 10,
FontStyle.Bold);
dataGridView1.ColumnHeadersDefaultCellStyle =
columnHeaderStyle;
dataGridView1.Columns[0].Name = "Recipe";
dataGridView1.Columns[1].Name = "Category";
dataGridView1.Columns[2].Name = thirdColumnHeader;
dataGridView1.Columns[3].Name = "Rating";
}
if (boringRecipe)
{
SetMeatloaf(boringMeatloaf, boringMeatloafRanking);
}
else
{
string greatMeatloafRecipe =
"1 lb. lean ground beef, "
+ "1/2 cup bread crumbs, 1/4 cup ketchup,"
+ "1/3 tsp onion powder, "
+ "1 clove of garlic, 1/2 pack onion soup mix "
+ " dash of your favorite BBQ Sauce";
SetMeatloaf(greatMeatloafRecipe, "***");
}
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridView.AutoResizeColumn
DataGridView.AutoResizeColumns
DataGridView.AutoResizeColumnHeadersHeight
DataGridView.AutoResizeRow
DataGridView.AutoResizeRows
DataGridView.AutoResizeRowHeadersWidth
DataGridViewAutoSizeRowMode
DataGridViewAutoSizeRowsMode
DataGridViewAutoSizeColumnMode
DataGridViewAutoSizeColumnsMode
DataGridViewColumnHeadersHeightSizeMode
DataGridViewRowHeadersWidthSizeMode
Redimensionando colunas e linhas no controle DataGridView dos Windows Forms
Dimensionando opções no controle DataGridView dos Windows Forms
Como redimensionar automaticamente células quando o conteúdo é alterado no
controle DataGridView dos Windows Forms
Como redimensionar automaticamente
células quando o conteúdo é alterado
no controle DataGridView dos Windows
Forms
Artigo • 02/06/2023
Você pode configurar o DataGridView controle para redimensionar suas linhas, colunas
e cabeçalhos automaticamente sempre que o conteúdo for alterado, de modo que as
células sejam sempre grandes o suficiente para exibir seus valores sem recorte.
Você tem várias opções para restringir as células que são usadas para determinar os
novos tamanhos. Por exemplo, você pode configurar o controle para redimensionar
automaticamente a largura de suas colunas com base apenas nos valores de linhas
atualmente exibidas. Com isso, você pode evitar a ineficiência ao trabalhar com um
grande número de linhas, embora, nesse caso, você queira usar métodos de
dimensionamento, como AutoResizeColumns ajustar tamanhos em momentos de sua
escolha.
Exemplo
C#
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
public AutoSizing()
{
InitializeComponent();
this.Load += new EventHandler(InitializeDataGridView);
AddDirections();
AddButton(button1, "Reset",
new EventHandler(ResetToDisorder));
AddButton(button2, "Change Column 3 Header",
new EventHandler(ChangeColumn3Header));
AddButton(button3, "Change Meatloaf Recipe",
new EventHandler(ChangeMeatloafRecipe));
AddButton(button4, "Change Restaurant 2",
new EventHandler(ChangeRestaurant));
AddButtonsForAutomaticResizing();
}
flowLayoutPanel1.Controls.Add(directions);
}
[STAThreadAttribute()]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new AutoSizing());
}
SetUpColumns();
PopulateRows();
shortMode = false;
boringRecipe = true;
}
DataGridViewCellStyle columnHeaderStyle =
new DataGridViewCellStyle();
columnHeaderStyle.BackColor = Color.Aqua;
columnHeaderStyle.Font = new Font("Verdana", 10,
FontStyle.Bold);
dataGridView1.ColumnHeadersDefaultCellStyle =
columnHeaderStyle;
dataGridView1.Columns[0].Name = "Recipe";
dataGridView1.Columns[1].Name = "Category";
dataGridView1.Columns[2].Name = thirdColumnHeader;
dataGridView1.Columns[3].Name = "Rating";
}
SetMeatloaf(greatMeatloafRecipe, "***");
}
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridView.ColumnHeadersHeightSizeMode
DataGridView.RowHeadersWidthSizeMode
DataGridView.AutoSizeColumnsMode
DataGridView.AutoSizeRowsMode
DataGridViewColumn.AutoSizeMode
DataGridViewColumn.InheritedAutoSizeMode
DataGridViewAutoSizeRowsMode
DataGridViewAutoSizeColumnMode
DataGridViewAutoSizeColumnsMode
DataGridViewColumnHeadersHeightSizeMode
DataGridViewRowHeadersWidthSizeMode
Redimensionando colunas e linhas no controle DataGridView dos Windows Forms
Dimensionando opções no controle DataGridView dos Windows Forms
Como: Redimensionar de forma programática as células para que o conteúdo
caiba no controle DataGridView do Windows Forms
Classificando dados no controle
Windows Forms DataGridView
Artigo • 21/06/2023
Nesta seção
Modos de classificação da coluna no controle DataGridView dos Windows Forms
Descreve as opções para classificar os dados no controle.
Referência
DataGridView
Fornece documentação de referência para o DataGridView controle.
DataGridView.Sort
Fornece documentação de referência para o Sort método .
DataGridViewColumn.SortMode
Fornece documentação de referência para a SortMode propriedade .
DataGridViewColumnSortMode
Fornece a documentação de referência para a DataGridViewColumnSortMode
enumeração .
Confira também
Controle DataGridView
Tipos de coluna no controle DataGridView dos Windows Forms
Modos de classificação da coluna no
controle DataGridView dos Windows
Forms
Artigo • 02/06/2023
DataGridViewColumnSortMode Descrição
valor
NotSortable Padrão para colunas sem caixa de texto. Você pode classificar essa
coluna programaticamente. No entanto, ela não se destina à
classificação, então nenhum espaço é reservado para o glifo de
classificação.
Talvez você queira alterar o modo de classificação de uma coluna que usa o padrão
NotSortable se ela contiver valores que podem ser ordenados significativamente. Por
exemplo, se tiver uma coluna de banco de dados que contêm números que
representam os estados de item, você poderá exibir esses números como ícones
correspondentes ao associar uma coluna de imagem para a coluna de banco de dados.
Em seguida, você pode alterar os valores de célula numérica em valores de exibição de
imagem em um manipulador para o DataGridView.CellFormatting evento. Nesse caso,
definir a SortMode propriedade para Automatic permitir que os usuários classifiquem a
coluna. A classificação automática permitirá que os usuários agrupem itens que tenham
o mesmo estado, mesmo se os estados correspondentes aos números não tiverem uma
sequência natural. As colunas da caixa de seleção são outro exemplo no qual a
classificação automática é útil para agrupar itens no mesmo estado.
Classificação programática
Você pode classificar um DataGridView programaticamente chamando seu Sort método.
7 Observação
Classificação personalizada
Você pode personalizar DataGridView usando a Sort(IComparer) sobrecarga do Sort
método ou manipulando o SortCompare evento.
7 Observação
ocorre para cada par de linhas no controle, permitindo que você calcule a ordem
correta.
7 Observação
Confira também
DataGridView
DataGridView.Sort
DataGridView.SortedColumn
DataGridView.SortOrder
DataGridViewColumn.SortMode
DataGridViewColumnHeaderCell.SortGlyphDirection
Classificando dados no controle DataGridView dos Windows Forms
Como: Definir os modos de classificação para colunas no controle DataGridView
do Windows Forms
Como: Personalizar a classificação no controle DataGridView do Windows Forms
Como: Definir os modos de classificação
para colunas no controle DataGridView
do Windows Forms
Artigo • 02/06/2023
C#
this.dataGridView1.Columns["Priority"].SortMode =
DataGridViewColumnSortMode.Automatic;
Compilando o código
Este exemplo requer:
Classificação programática
O exemplo de código a seguir demonstra uma classificação programática usando as
SortOrder propriedades e SortedColumn para determinar a direção da classificação e a
SortGlyphDirection propriedade para definir manualmente o glifo de classificação. A
Sort(DataGridViewColumn,ListSortDirection) sobrecarga do Sort método é usada para
classificar dados apenas em uma única coluna.
C#
using System;
using System.ComponentModel;
using System.Windows.Forms;
sortButton.Dock = DockStyle.Bottom;
sortButton.Text = "Sort";
Controls.Add(dataGridView1);
Controls.Add(sortButton);
Text = "DataGridView programmatic sort demo";
}
PopulateDataGridView();
base.OnLoad(e);
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
#endregion
class Form1 : Form
{
private DataGridView dataGridView1 = new DataGridView();
public Form1()
{
// Initialize the form.
// This code can be replaced with designer generated code.
dataGridView1.AllowUserToAddRows = false;
dataGridView1.Dock = DockStyle.Fill;
dataGridView1.SortCompare += new
DataGridViewSortCompareEventHandler(
this.dataGridView1_SortCompare);
Controls.Add(this.dataGridView1);
this.Text = "DataGridView.SortCompare demo";
PopulateDataGridView();
}
dataGridView1.Rows[e.RowIndex1].Cells["ID"].Value.ToString(),
dataGridView1.Rows[e.RowIndex2].Cells["ID"].Value.ToString());
}
e.Handled = true;
}
}
C#
using System;
using System.Drawing;
using System.Windows.Forms;
#endregion
public Form1()
{
// Initialize the form.
// This code can be replaced with designer generated code.
AutoSize = true;
Text = "DataGridView IComparer sort demo";
FlowLayoutPanel1.FlowDirection = FlowDirection.TopDown;
FlowLayoutPanel1.Location = new System.Drawing.Point( 304, 0 );
FlowLayoutPanel1.AutoSize = true;
FlowLayoutPanel1.Controls.Add( RadioButton1 );
FlowLayoutPanel1.Controls.Add( RadioButton2 );
FlowLayoutPanel1.Controls.Add( Button1 );
Button1.Text = "Sort";
RadioButton1.Text = "Ascending";
RadioButton2.Text = "Descending";
RadioButton1.Checked = true;
Controls.Add( FlowLayoutPanel1 );
Controls.Add( DataGridView1 );
}
base.OnLoad( e );
}
Compilando o código
Esses exemplos precisam de:
Confira também
DataGridView
Classificando dados no controle DataGridView dos Windows Forms
Modos de classificação da coluna no controle DataGridView dos Windows Forms
Como: Definir os modos de classificação para colunas no controle DataGridView
do Windows Forms
Entrada de dados no controle
DataGridView dos Windows Forms
Artigo • 02/06/2023
O controle DataGridView oferece vários recursos que permitem a você alterar como os
usuários adicionam ou modificam dados no controle. Por exemplo, é possível tornar a
entrada de dados mais eficiente fornecendo os valores padrão para novas linhas e
alertando usuários quando ocorrem erros.
Nesta seção
Como: Especificar o modo de edição do controle DataGridView do Windows Forms
Descreve como alterar a maneira como os usuários iniciam a edição de células.
Usando a linha para novos registros no controle DataGridView dos Windows Forms
Descreve a linha para novos registros em detalhes, incluindo informações sobre como
escondê-lo, sobre a personalização de sua aparência e sobre como ele se relaciona com
a Rows coleção.
Referência
DataGridView
Fornece documentação de referência para o DataGridView controle.
DataGridView.EditMode
Fornece documentação de referência para a EditMode propriedade.
DataGridView.DefaultValuesNeeded
Fornece documentação de referência para o DefaultValuesNeeded evento.
DataGridView.DataError
Fornece documentação de referência para o DataError evento.
DataGridView.CellValidating
Fornece documentação de referência para o CellValidating evento.
Seções relacionadas
Exibindo dados no controle DataGridView dos Windows Forms
Fornece tópicos que descrevem como preencher o controle com os dados
manualmente ou de uma fonte de dados externa.
Confira também
Controle DataGridView
Tipos de coluna no controle DataGridView dos Windows Forms
Como: Especificar o modo de edição do
controle DataGridView do Windows
Forms
Artigo • 02/06/2023
Por padrão, os usuários podem editar o conteúdo da célula da caixa de texto atual
DataGridView digitando-a ou pressionando F2. Isso colocará a célula no modo de
edição se todas as condições a seguir forem atendidas:
No modo de edição, o usuário pode alterar o valor da célula e pressionar ENTER para
confirmar a alteração ou ESC para reverter a célula para seu valor original.
Você pode configurar um DataGridView controle para que uma célula entre no modo de
edição assim que ela se tornar a célula atual. O comportamento das teclas ENTER e ESC
fica inalterado nesse caso, mas a célula permanece no modo de edição depois que o
valor é confirmado ou revertido. Você também pode configurar o controle para que as
células entrem no modo de edição somente quando os usuários digitam na célula ou
quando pressionam F2. Por fim, você pode impedir que as células entrem no modo de
edição, exceto quando você chama o BeginEdit método.
C#
this.dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridView.EditMode
Entrada de dados no controle DataGridView dos Windows Forms
Como: Especificar valores padrão para
novas linhas no controle DataGridView
do Windows Forms
Artigo • 21/06/2023
Você pode tornar a entrada de dados mais conveniente quando o aplicativo preenche
valores padrão para linhas recém-adicionadas. Com a DataGridView classe , você pode
preencher valores padrão com o DefaultValuesNeeded evento . Esse evento é gerado
quando o usuário insere a linha para novos registros. Quando o código manipula esse
evento, você pode preencher as células desejadas com valores de sua escolha.
O exemplo de código a seguir demonstra como especificar valores padrão para novas
linhas usando o DefaultValuesNeeded evento .
Exemplo
C#
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridView.DefaultValuesNeeded
Entrada de dados no controle DataGridView dos Windows Forms
Usando a linha para novos registros no controle DataGridView dos Windows
Forms
Usando a linha para novos registros no
controle DataGridView dos Windows
Forms
Artigo • 02/06/2023
Ao usar um DataGridView para editar dados em seu aplicativo, você geralmente deseja
dar aos usuários a capacidade de adicionar novas linhas de dados ao armazenamento
de dados. O DataGridView controle dá suporte a essa funcionalidade fornecendo uma
linha para novos registros, que sempre é mostrada como a última linha. Ela é marcada
com um símbolo de asterisco (*) em seu cabeçalho de linha. As seções a seguir tratam
de algumas coisas que você deve considerar quando programar com a linha de novos
registros habilitada.
Para o caso associado a dados, a linha para novos registros será mostrada se a
AllowUserToAddRows propriedade do controle e a IBindingList.AllowNew propriedade
da fonte de dados forem ambas true . Se uma delas for false , a linha não será exibida.
Esse evento fornece acesso ao novo DataGridViewRow e permite que você preencha a
nova linha com dados padrão. Para obter mais informações, consulte Como especificar
valores padrão para novas linhas no controle DataGridView dos Windows Forms
A coleção de linhas
A linha para novos registros está contida na DataGridView coleção do Rows controle,
mas se comporta de forma diferente em dois aspectos:
A linha para novos registros não pode ser removida da Rows coleção
programaticamente. Um InvalidOperationException é lançado se isso for tentado.
O usuário também não pode excluir a linha de novos registros. O
DataGridViewRowCollection.Clear método não remove essa linha da Rows coleção.
Os valores iniciais exibidos pelas células na linha para novos registros são recuperados
da propriedade de DefaultNewRowValue cada célula. Para células do tipo
DataGridViewImageCell, essa propriedade retorna uma imagem de espaço reservado.
Caso contrário, essa propriedade retornará null . Você pode substituir essa propriedade
para retornar um valor personalizado. No entanto, esses valores iniciais podem ser
substituídos por um DefaultValuesNeeded manipulador de eventos quando o foco entra
na linha para novos registros.
Os ícones padrão do cabeçalho dessa linha, que são uma seta ou um asterisco, não são
expostos publicamente. Se você quiser personalizar os ícones, precisará criar uma classe
personalizada DataGridViewRowHeaderCell .
Classificação
No modo não associado, novos registros sempre serão adicionados ao final do
DataGridView mesmo se o usuário tiver classificado o conteúdo do DataGridView. O
usuário precisará aplicar a classificação novamente para classificar a linha para a posição
correta; esse comportamento é semelhante ao do ListView controle.
Modo virtual
Se estiver implementando o modo virtual, você precisará monitorar quando uma linha
de novos registros é necessária no modelo de dados e o momento para reverter a
adição da linha. A implementação exata dessa funcionalidade depende da
implementação do modelo de dados e de sua semântica de transação, por exemplo, se
o escopo de confirmação está no nível da célula ou da linha. Para obter mais
informações, consulte Modo virtual no controle DataGridView dos Windows Forms.
Confira também
DataGridView
DataGridView.DefaultValuesNeeded
Entrada de dados no controle DataGridView dos Windows Forms
Como: Especificar valores padrão para novas linhas no controle DataGridView do
Windows Forms
Passo a passo: Validando dados no
controle DataGridView do Windows
Forms
Artigo • 21/06/2023
Neste passo a passo, você recuperará linhas da Customers tabela no banco de dados de
exemplo Northwind e as exibirá em um DataGridView controle . Quando um usuário
edita uma célula na CompanyName coluna e tenta sair da célula, o CellValidating
manipulador de eventos examinará a nova cadeia de caracteres de nome da empresa
para garantir que ela não esteja vazia; se o novo valor for uma cadeia de caracteres
vazia, o DataGridView impedirá que o cursor do usuário saia da célula até que uma
cadeia de caracteres não vazia seja inserida.
Para copiar o código deste tópico como uma única lista, consulte Como Validar Dados
no Controle DataGridView do Windows Forms.
Pré-requisitos
Para concluir este passo a passo, você precisará de:
Criando o formulário
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
public Form1()
{
// Initialize the form.
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(dataGridView1);
this.Load += new EventHandler(Form1_Load);
this.Text = "DataGridView validation demo (disallows empty
CompanyName)";
}
C#
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
) Importante
return data;
}
C#
DataGridViewCellValidatingEventHandler(dataGridView1_CellValidating);
this.dataGridView1.CellEndEdit += new
DataGridViewCellEventHandler(dataGridView1_CellEndEdit);
C#
Testando o aplicativo
Agora, é possível testar o formulário para garantir que ele se comporta da forma
esperada.
Próximas etapas
Esse aplicativo fornece uma compreensão básica dos DataGridView recursos do
controle. Você pode personalizar a aparência e o DataGridView comportamento do
controle de várias maneiras:
Alterar estilos de borda e cabeçalho. Para obter mais informações, consulte Como
alterar os estilos de borda e linha de grade no controle DataGridView dos
Windows Forms.
Manipule grandes conjuntos de dados usando o modo virtual. Para obter mais
informações, consulte Passo a passo: implementando o modo virtual no controle
DataGridView dos Windows Forms.
Personalize a aparência das células. Para obter mais informações, consulte Como
Personalizar a Aparência de Células no Controle DataGridView do Windows Forms
e Como Definir Estilos de Fonte e Cor no Controle DataGridView do Windows
Forms.
Confira também
DataGridView
BindingSource
Entrada de dados no controle DataGridView dos Windows Forms
Como validar dados no controle Windows Forms DataGridView
Passo a passo: Identificando Erros que Ocorrem Durante a Entrada de Dados no
Controle DataGridView do Windows Forms
Protegendo informações de conexão
Como: Validar dados no controle
DataGridView do Windows Forms
Artigo • 21/06/2023
Para obter uma explicação completa desse exemplo de código, consulte Passo a passo:
validando dados no controle Windows Forms DataGridView.
Exemplo
C#
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
public Form1()
{
// Initialize the form.
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(dataGridView1);
this.Load += new EventHandler(Form1_Load);
this.Text = "DataGridView validation demo (disallows empty
CompanyName)";
}
DataGridViewCellValidatingEventHandler(dataGridView1_CellValidating);
this.dataGridView1.CellEndEdit += new
DataGridViewCellEventHandler(dataGridView1_CellEndEdit);
return data;
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
BindingSource
Passo a passo: validando dados no controle DataGridView dos Windows Forms
Entrada de dados no controle DataGridView dos Windows Forms
Passo a passo: Identificando Erros que Ocorrem Durante a Entrada de Dados no
Controle DataGridView do Windows Forms
Protegendo informações de conexão
Passo a passo: Identificando Erros que
Ocorrem Durante a Entrada de Dados
no Controle DataGridView do Windows
Forms
Artigo • 02/06/2023
Neste passo a passo, você recuperará linhas da Customers tabela no banco de dados de
exemplo Northwind e as exibirá em um DataGridView controle. Quando um valor
duplicado CustomerID for detectado em uma nova linha ou em uma linha existente
editada, o DataError evento ocorrerá, que será tratado exibindo um MessageBox que
descreve a exceção.
Para copiar o código deste tópico como uma única lista, consulte Como tratar erros que
ocorrem durante a entrada de dados no controle DataGridView do Windows Forms.
Pré-requisitos
Para concluir este passo a passo, você precisará de:
Criando o formulário
C#
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
public Form1()
{
// Initialize the form.
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(dataGridView1);
this.Load += new EventHandler(Form1_Load);
}
C#
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
) Importante
C#
private static DataTable GetData(string selectCommand)
{
string connectionString =
"Integrated Security=SSPI;Persist Security Info=False;" +
"Initial Catalog=Northwind;Data Source=localhost;Packet
Size=4096";
return data;
}
C#
C#
Testando o aplicativo
Agora, é possível testar o formulário para garantir que ele se comporta da forma
esperada.
Próximas etapas
Esse aplicativo fornece uma compreensão básica das DataGridView funcionalidades do
controle. Você pode personalizar a aparência e o DataGridView comportamento do
controle de várias maneiras:
Alterar estilos de borda e cabeçalho. Para obter mais informações, consulte Como
alterar os estilos de borda e linha de grade no controle DataGridView dos
Windows Forms.
Manipule grandes conjuntos de dados usando o modo virtual. Para obter mais
informações, consulte Passo a passo: implementando o modo virtual no controle
DataGridView dos Windows Forms.
Personalize a aparência das células. Para obter mais informações, consulte Como
personalizar a aparência de células no controle DataGridView dos Windows Forms
e Como definir estilos de célula padrão no controle DataGridView dos Windows
Forms.
Confira também
DataGridView
BindingSource
Entrada de dados no controle DataGridView dos Windows Forms
Como: Identificar Erros que Ocorrem Durante a Entrada de Dados no Controle
DataGridView do Windows Forms
Passo a passo: validando dados no controle DataGridView dos Windows Forms
Protegendo informações de conexão
Como: Identificar Erros que Ocorrem
Durante a Entrada de Dados no
Controle DataGridView do Windows
Forms
Artigo • 02/06/2023
Para obter uma explicação completa deste exemplo de código, consulte Passo a passo:
Manipulando erros que ocorrem durante a entrada de dados no controle datagridview
Windows Forms.
Exemplo
C#
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
public Form1()
{
// Initialize the form.
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(dataGridView1);
this.Load += new EventHandler(Form1_Load);
}
return data;
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
BindingSource
Passo a passo: Identificando Erros que Ocorrem Durante a Entrada de Dados no
Controle DataGridView do Windows Forms
Entrada de dados no controle DataGridView dos Windows Forms
Passo a passo: validando dados no controle DataGridView dos Windows Forms
Protegendo informações de conexão
Seleção e uso da Área de Transferência
com o controle DataGridView dos
Windows Forms
Artigo • 02/06/2023
Nesta seção
Modos de seleção no controle DataGridView dos Windows Forms
Descreve as opções para seleção do usuário e programática no controle.
Como: Habilitar usuários para copiarem várias células na Área de Transferência usando o
controle DataGridView do Windows Forms
Descreve como habilitar o suporte à área de transferência no controle.
Referência
DataGridView
Fornece a documentação de referência para o DataGridView controle.
DataGridView.SelectionMode
Fornece a documentação de referência para a SelectionMode propriedade.
ClipboardCopyMode
Fornece a documentação de referência para a ClipboardCopyMode propriedade.
DataGridViewSelectedCellCollection
Fornece a documentação de referência para a DataGridViewSelectedCellCollection
classe.
DataGridViewSelectedRowCollection
Fornece a documentação de referência para a DataGridViewSelectedRowCollection
classe.
DataGridViewSelectedColumnCollection
Fornece a documentação de referência para a DataGridViewSelectedColumnCollection
classe.
Confira também
Controle DataGridView
Tratamento de teclado e mouse padrão no controle DataGridView dos Windows
Forms
Modos de seleção no controle
DataGridView dos Windows Forms
Artigo • 02/06/2023
Às vezes, você deseja que seu aplicativo execute ações com base em seleções de
usuário dentro de um DataGridView controle. Dependendo das ações, você talvez
queira restringir os tipos de seleção possíveis. Por exemplo, suponha que seu aplicativo
possa imprimir um relatório para o registro selecionado no momento. Nesse caso, talvez
você queira configurar o DataGridView controle para que clicar em qualquer lugar
dentro de uma linha sempre selecione a linha inteira e, portanto, apenas uma linha por
vez possa ser selecionada.
Valor de Descrição
DataGridViewSelectionMode
7 Observação
Por padrão, os usuários podem selecionar várias linhas, colunas ou células arrastando
com o mouse, pressionando CTRL ou SHIFT ao selecionar para estender ou modificar
uma seleção ou clicando na célula de cabeçalho do canto superior esquerdo para
selecionar todas as células no controle. Para evitar esse comportamento, defina a
MultiSelect propriedade como false .
Seleção programática
O modo de seleção atual restringe o comportamento de seleção programática, bem
como a seleção do usuário. Você pode alterar a seleção atual programaticamente
definindo a propriedade de todas as Selected células, linhas ou colunas presentes no
DataGridView controle. Você também pode selecionar todas as células no controle por
meio do SelectAll método, dependendo do modo de seleção. Para limpar a seleção, use
o ClearSelection método.
Observe que alterar o valor da CurrentCell propriedade não altera a seleção atual.
Você pode recuperar uma coleção das células, linhas ou colunas selecionadas no
momento por meio do SelectedCells, SelectedRowse SelectedColumns das propriedades
do DataGridView controle. O acesso a essas propriedades é ineficiente quando todas as
células no controle estão selecionadas. Para evitar uma penalidade de desempenho
nesse caso, use o AreAllCellsSelected método primeiro. Além disso, acessar essas
coleções para determinar o número de células, linhas ou colunas selecionadas pode ser
ineficiente. Em vez disso, você deve usar o GetCellCountmétodo, GetRowCountou
GetColumnCount o método, passando o Selected valor.
Dica
Exemplo
C#
this.dataGridView1.SelectionMode =
DataGridViewSelectionMode.FullRowSelect;
this.dataGridView1.MultiSelect = false;
Compilando o código
Este exemplo requer:
Confira também
DataGridView
MultiSelect
SelectionMode
DataGridViewSelectionMode
Seleção e uso da Área de Transferência com o controle DataGridView dos Windows
Forms
Modos de seleção no controle DataGridView dos Windows Forms
Como: Obter as células, as linhas e as
colunas selecionadas no controle
DataGridView do Windows Forms
Artigo • 21/06/2023
7 Observação
C#
for (int i = 0;
i < selectedCellCount; i++)
{
sb.Append("Row: ");
sb.Append(dataGridView1.SelectedCells[i].RowIndex
.ToString());
sb.Append(", Column: ");
sb.Append(dataGridView1.SelectedCells[i].ColumnIndex
.ToString());
sb.Append(Environment.NewLine);
}
C#
dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected);
if (selectedRowCount > 0)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
C#
Compilando o código
Este exemplo requer:
Programação robusta
As coleções descritas neste tópico não são executadas com eficiência quando uma
grande quantidade de células, linhas ou colunas for selecionada. Para obter mais
informações sobre como usar essas coleções com grandes quantidades de dados,
consulte Práticas recomendadas para dimensionamento do controle DataGridView dos
Windows Forms.
Confira também
DataGridView
SelectionMode
AreAllCellsSelected
SelectedCells
SelectedRows
SelectedColumns
Seleção e uso da Área de Transferência com o controle DataGridView dos Windows
Forms
Como: Habilitar usuários para copiarem
várias células na Área de Transferência
usando o controle DataGridView do
Windows Forms
Artigo • 02/06/2023
É possível configurar a cópia de célula para copiar somente valores de célula, para
incluir texto de cabeçalho de linha e coluna nos dados da área de transferência ou para
incluir somente texto de cabeçalho quando os usuários selecionarem linhas ou colunas
inteiras.
C#
this.DataGridView1.ClipboardCopyMode =
DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
Exemplo
O exemplo de código completo a seguir demonstra como as células são copiadas para a
Área de Transferência. Este exemplo inclui um botão que copia as células selecionadas
para a Área de Transferência usando o DataGridView.GetClipboardContent método e
exibe o conteúdo da Área de Transferência em uma caixa de texto.
C#
using System;
using System.Windows.Forms;
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new Form1());
}
public Form1()
{
this.DataGridView1.AllowUserToAddRows = false;
this.DataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(this.DataGridView1);
this.TextBox1.Multiline = true;
this.TextBox1.Height = 100;
this.TextBox1.Dock = DockStyle.Bottom;
this.Controls.Add(this.TextBox1);
Compilando o código
Este código requer:
Confira também
DataGridView
ClipboardCopyMode
GetClipboardContent
Seleção e uso da Área de Transferência com o controle DataGridView dos Windows
Forms
Programando com células, linhas e
colunas no controle DataGridView dos
Windows Forms
Artigo • 21/06/2023
Esta seção fornece tópicos que demonstram várias tarefas de programação envolvendo
objetos de célula, linha e coluna.
Nesta seção
Como adicionar ToolTips a células individuais em um controle DataGridView dos
Windows Forms
Descreve como manipular o CellFormatting evento para fornecer dicas de ferramenta
diferentes para células individuais.
Como: Realizar uma ação personalizada com base em alterações em uma célula do
controle DataGridView do Windows Forms
Descreve como lidar com os CellValueChanged eventos e CellStateChanged .
Referência
DataGridView
Fornece documentação de referência para o DataGridView controle.
DataGridViewCell
Fornece documentação de referência para a DataGridViewCell classe .
DataGridViewRow
Fornece documentação de referência para a DataGridViewRow classe .
DataGridViewColumn
Fornece documentação de referência para a DataGridViewColumn classe .
Seções relacionadas
Funcionalidades de coluna, linha e célula básicas no controle DataGridView dos
Windows Forms
Fornece tópicos que descrevem as propriedades da célula, linha e coluna mais usados.
Confira também
Controle DataGridView
Tipos de coluna no controle DataGridView dos Windows Forms
Como: Adicionar ToolTips a células
individuais em um controle
DataGridView do Windows Forms
Artigo • 21/06/2023
Por padrão, as Dicas de Ferramenta são usadas para exibir os valores das DataGridView
células que são muito pequenas para mostrar todo o conteúdo. Contudo, é possível
substituir esse comportamento para definir valores de texto de dicas de ferramentas
para células individuais. Isso é útil para exibir aos usuários informações adicionais sobre
uma célula ou para fornecer aos usuários uma descrição alternativa do conteúdo da
célula. Por exemplo, se você tiver uma linha que exibe ícones de status, talvez seja
recomendável fornecer explicações de texto usando dicas de ferramenta.
C#
Compilando o código
Este exemplo requer:
Programação robusta
Ao associar o DataGridView controle a uma fonte de dados externa ou fornecer sua
própria fonte de dados implementando o modo virtual, você poderá encontrar
problemas de desempenho. Para evitar uma penalidade de desempenho ao trabalhar
com grandes quantidades de dados, manipule o CellToolTipTextNeeded evento em vez
de definir a ToolTipText propriedade de várias células. Quando você manipula esse
evento, obter o valor de uma propriedade de célula ToolTipText gera o evento e retorna
o valor da DataGridViewCellToolTipTextNeededEventArgs.ToolTipText propriedade
conforme especificado no manipulador de eventos.
Confira também
DataGridView
DataGridView.ShowCellToolTips
DataGridView.CellToolTipTextNeeded
DataGridViewCell
DataGridViewCell.ToolTipText
Programando com células, linhas e colunas no controle DataGridView dos
Windows Forms
Como: Realizar uma ação personalizada
com base em alterações em uma célula
do controle DataGridView do Windows
Forms
Artigo • 21/06/2023
O DataGridView controle tem vários eventos que você pode usar para detectar
alterações no estado das DataGridView células. Dois dos eventos mais usados são os
CellValueChanged eventos e CellStateChanged .
C#
C#
Confira também
DataGridView
DataGridView.CellValueChanged
DataGridView.CellStateChanged
Programando com células, linhas e colunas no controle DataGridView dos
Windows Forms
Passo a passo: validando dados no controle DataGridView dos Windows Forms
Como: Manipular bandas no controle
DataGridView do Windows Forms
Artigo • 02/06/2023
Exemplo
C#
using System.Drawing;
using System.Windows.Forms;
using System;
AddButton(Button1, "Reset",
new EventHandler(Button1_Click));
AddButton(Button2, "Change Column 3 Header",
new EventHandler(Button2_Click));
AddButton(Button3, "Change Meatloaf Recipe",
new EventHandler(Button3_Click));
AddAdditionalButtons();
InitializeDataGridView();
}
DataGridView dataGridView;
Button Button1 = new Button();
Button Button2 = new Button();
Button Button3 = new Button();
Button Button4 = new Button();
Button Button5 = new Button();
Button Button6 = new Button();
Button Button7 = new Button();
Button Button8 = new Button();
Button Button9 = new Button();
Button Button10 = new Button();
FlowLayoutPanel FlowLayoutPanel1 = new FlowLayoutPanel();
PostRowCreation();
shortMode = false;
boringRecipe = true;
}
FreezeBand(dataGridView.Rows[0]);
}
FreezeBand(dataGridView.Columns[1]);
}
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new DataGridViewBandDemo());
}
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridViewBand
DataGridViewRow
DataGridViewColumn
Programando com células, linhas e colunas no controle DataGridView dos
Windows Forms
Como: Manipular linhas no controle
DataGridView do Windows Forms
Artigo • 02/06/2023
Exemplo
C#
using System.Windows.Forms;
using System;
using System.Drawing;
AddButton(Button1, "Reset",
new EventHandler(Button1_Click));
AddButton(Button2, "Change Column 3 Header",
new EventHandler(Button2_Click));
AddButton(Button3, "Change Meatloaf Recipe",
new EventHandler(Button3_Click));
AddAdditionalButtons();
InitializeDataGridView();
}
shortMode = false;
boringRecipe = true;
}
int secondRow = 1;
DataGridViewRow row = dataGridView.Rows[secondRow];
row.MinimumHeight = 40;
}
// Set height.
private void Button5_Click(object sender, System.EventArgs e)
{
int rowNumber = 1;
foreach (DataGridViewRow row in dataGridView.Rows)
{
if (row.IsNewRow) continue;
row.HeaderCell.Value = "Row " + rowNumber;
rowNumber = rowNumber + 1;
}
dataGridView.AutoResizeRowHeadersWidth(
DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);
}
int ratingColumn = 3;
row.Cells[ratingColumn].Value = stars;
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridViewBand
DataGridViewRow
DataGridViewColumn
Programando com células, linhas e colunas no controle DataGridView dos
Windows Forms
Como: Manipular colunas no controle
DataGridView do Windows Forms
Artigo • 02/06/2023
Exemplo
C#
using System.Windows.Forms;
using System;
using System.Drawing;
AddButton(Button1, "Reset",
new EventHandler(ResetToDisorder));
AddButton(Button2, "Change Column 3 Header",
new EventHandler(ChangeColumn3Header));
AddButton(Button3, "Change Meatloaf Recipe",
new EventHandler(ChangeMeatloafRecipe));
AddAdditionalButtons();
InitializeDataGridView();
}
DataGridView dataGridView;
Button Button1 = new Button();
Button Button2 = new Button();
Button Button3 = new Button();
Button Button4 = new Button();
Button Button5 = new Button();
Button Button6 = new Button();
Button Button7 = new Button();
Button Button8 = new Button();
Button Button9 = new Button();
Button Button10 = new Button();
FlowLayoutPanel FlowLayoutPanel1 = new FlowLayoutPanel();
PostColumnCreation();
shortMode = false;
boringRecipe = true;
}
dataGridView.CellMouseEnter +=
dataGridView_CellMouseEnter;
dataGridView.AutoSizeColumnModeChanged +=
dataGridView_AutoSizeColumnModeChanged;
}
cell.Style.BackColor = Color.Wheat;
column.CellTemplate = cell;
}
column.ContextMenuStrip = strip;
column.ContextMenuStrip.Items.Add(toolStripItem1);
}
}
firstColumn.DefaultCellStyle = cellStyle;
}
DataGridViewColumn firstVisibleColumn =
columnCollection.GetFirstColumn(DataGridViewElementStates.Visible);
DataGridViewColumn lastVisibleColumn =
columnCollection.GetLastColumn(
DataGridViewElementStates.Visible,
DataGridViewElementStates.None);
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new DataGridViewColumnDemo());
}
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridViewBand
DataGridViewRow
DataGridViewColumn
Programando com células, linhas e colunas no controle DataGridView dos
Windows Forms
Como: Trabalhar com colunas de
imagem no controle DataGridView do
Windows Forms
Artigo • 02/06/2023
Exemplo
C#
using System.IO;
using System.Windows.Forms;
using System.Drawing;
using System;
this.AutoSize = true;
SetupButtons();
InitializeDataGridView(null, null);
}
#region "bitmaps"
private byte[] oImage = new byte[] {
0x42, 0x4D, 0xC6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x76,
0x0, 0x0, 0x0, 0x28, 0x0, 0x0, 0x0, 0xB, 0x0, 0x0, 0x0, 0xA,
0x0, 0x0, 0x0, 0x1, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x50,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x80, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x80, 0x80, 0x0,
0x80, 0x0, 0x0, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x80, 0x0,
0x0, 0xC0, 0xC0, 0xC0, 0x0, 0x80, 0x80, 0x80, 0x0, 0x0, 0x0,
0xFF, 0x0, 0x0, 0xFF, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xFF,
0x0, 0x0, 0x0, 0xFF, 0x0, 0xFF, 0x0, 0xFF, 0xFF, 0x0, 0x0,
0xFF, 0xFF, 0xFF, 0x0, 0xFF, 0xFF, 0x0, 0xF, 0xFF, 0xF0,
0x0, 0x0, 0xFF, 0x0, 0xFF, 0xF0, 0xF, 0xF0, 0x0, 0x0, 0xF0,
0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x0, 0x0, 0xF0, 0xFF, 0xFF,
0xFF, 0xF0, 0xF0, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF,
0x0, 0x0, 0x0, 0xF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0, 0x0, 0x0,
0xF0, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x0, 0x0, 0xF0, 0xFF,
0xFF, 0xFF, 0xF0, 0xF0, 0x0, 0x0, 0xFF, 0x0, 0xFF, 0xF0,
0xF, 0xF0, 0x0, 0x0, 0xFF, 0xFF, 0x0, 0xF, 0xFF, 0xF0, 0x0,
0x0};
ConfigureForm();
SizeGrid();
CreateColumns();
CreateRows();
this.Panel1.ResumeLayout(false);
this.ResumeLayout(false);
}
Controls.Add(dataGridView1);
}
private void SetupButtons()
{
Button1.AutoSize = true;
SetupButton(Button1, "Restart", new EventHandler(Reset));
Panel1.Controls.Add(turn);
SetupButton(Button2, "Increase Cell Size", new
EventHandler(MakeCellsLarger));
SetupButton(Button3, "Stretch Images", new EventHandler(Stretch));
SetupButton(Button4, "Zoom Images", new EventHandler(ZoomToImage));
SetupButton(Button5, "Normal Images", new
EventHandler(NormalImage));
}
imageColumn.Image = unMarked;
dataGridView1.Columns.Add(imageColumn);
columnCount = columnCount + 1;
}
while (columnCount < 3);
}
dataGridView1.AutoSize = true;
}
if (turn.Text.Equals(gameOverString)) { return; }
if (cell.Value == blank)
{
if (IsOsTurn())
{
cell.Value = o;
}
else
{
cell.Value = x;
}
ToggleTurn();
}
if (IsAWin())
{
turn.Text = gameOverString;
}
}
if (markingUnderMouse == blank)
{
dataGridView1.Cursor = Cursors.Default;
}
else if (markingUnderMouse == o || markingUnderMouse == x)
{
dataGridView1.Cursor = Cursors.No;
ToolTip(e, true);
}
}
if (showTip)
{
cell.ToolTipText = imageColumn.Description;
}
else { cell.ToolTipText = String.Empty; }
}
return false;
}
[STAThread]
public static void Main()
{
Application.Run(new TicTacToe());
}
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridViewImageColumn
Programando com células, linhas e colunas no controle DataGridView dos
Windows Forms
Como: Exibir imagens em células do controle DataGridView do Windows Forms
Personalizando o controle DataGridView
dos Windows Forms
Artigo • 02/06/2023
O controle DataGridView fornece várias propriedades que podem ser usadas para
ajustar a aparência e o comportamento básico (visual) das células, linhas e colunas. Se
você tiver necessidades especiais que vão além dos recursos da DataGridViewCellStyle
classe, no entanto, você também pode implementar o desenho do proprietário para o
controle ou estender seus recursos criando células, colunas e linhas personalizadas.
Para pintar linhas e células por conta própria, você pode manipular vários eventos de
pintura DataGridView . Para modificar a funcionalidade existente ou fornecer novas
funcionalidades, crie seus próprios tipos derivados dos tipos DataGridViewCell ,
DataGridViewColumn e DataGridViewRow existentes. Você também pode fornecer novos
recursos de edição criando tipos derivados que exibem um controle de sua escolha
quando uma célula está em modo de edição.
Nesta seção
Como personalizar a aparência de células no controle DataGridView dos Windows
Forms
Descreve como manipular o CellPainting evento para pintar as células manualmente.
Referência
DataGridView
Fornece a documentação de referência para o DataGridView controle.
DataGridViewCell
Fornece a documentação de referência para a DataGridViewCell classe.
DataGridViewRow
Fornece a documentação de referência para a DataGridViewRow classe.
DataGridViewColumn
Fornece a documentação de referência para a DataGridViewColumn classe.
IDataGridViewEditingControl
Fornece a documentação de referência para a IDataGridViewEditingControl interface.
Seções relacionadas
Formatação básica e estilos no controle DataGridView dos Windows Forms
Fornece tópicos que descrevem como modificar a aparência básica do controle e a
formatação de exibição de dados da célula.
Confira também
Controle DataGridView
Tipos de coluna no controle DataGridView dos Windows Forms
Como personalizar a aparência de
células no controle DataGridView dos
Windows Forms
Artigo • 21/06/2023
Exemplo
C#
using (
Brush gridBrush = new SolidBrush(this.dataGridView1.GridColor),
backColorBrush = new SolidBrush(e.CellStyle.BackColor))
{
using (Pen gridLinePen = new Pen(gridBrush))
{
// Erase the cell.
e.Graphics.FillRectangle(backColorBrush, e.CellBounds);
// Draw the grid lines (only the right and bottom lines;
// DataGridView takes care of the others).
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left,
e.CellBounds.Bottom - 1, e.CellBounds.Right - 1,
e.CellBounds.Bottom - 1);
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1,
e.CellBounds.Top, e.CellBounds.Right - 1,
e.CellBounds.Bottom);
Compilando o código
Este exemplo requer:
Confira também
DataGridView
CellPainting
Personalizando o controle DataGridView dos Windows Forms
Como: Personalizar a aparência de
linhas no controle DataGridView do
Windows Forms
Artigo • 21/06/2023
Exemplo
C#
using System;
using System.Drawing;
using System.Windows.Forms;
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new DataGridViewRowPainting());
}
public DataGridViewRowPainting()
{
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(this.dataGridView1);
this.Load += new EventHandler(DataGridViewRowPainting_Load);
this.Text = "DataGridView row painting demo";
}
DataGridViewColumnEventHandler(dataGridView1_ColumnWidthChanged);
this.dataGridView1.RowPrePaint += new
DataGridViewRowPrePaintEventHandler(dataGridView1_RowPrePaint);
this.dataGridView1.RowPostPaint += new
DataGridViewRowPostPaintEventHandler(dataGridView1_RowPostPaint);
this.dataGridView1.CurrentCellChanged += new
EventHandler(dataGridView1_CurrentCellChanged);
this.dataGridView1.RowHeightChanged += new
DataGridViewRowEventHandler(dataGridView1_RowHeightChanged);
}
// Forces the row to repaint itself when the user changes the
// current cell. This is necessary to refresh the focus rectangle.
void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
{
if (oldRowIndex != -1)
{
this.dataGridView1.InvalidateRow(oldRowIndex);
}
oldRowIndex = this.dataGridView1.CurrentCellAddress.Y;
}
// Paints the content that spans multiple columns and the focus
rectangle.
void dataGridView1_RowPostPaint(object sender,
DataGridViewRowPostPaintEventArgs e)
{
// Calculate the bounds of the row.
Rectangle rowBounds = new Rectangle(
this.dataGridView1.RowHeadersWidth, e.RowBounds.Top,
this.dataGridView1.Columns.GetColumnsWidth(
DataGridViewElementStates.Visible) -
this.dataGridView1.HorizontalScrollingOffset + 1,
e.RowBounds.Height);
this.dataGridView1.Rows.SharedRow(e.RowIndex).Cells[2].Value;
if (recipe != null)
{
String text = recipe.ToString();
e.Graphics.SetClip(oldClip);
}
}
finally
{
forebrush.Dispose();
}
if (this.dataGridView1.CurrentCellAddress.Y == e.RowIndex)
{
// Paint the focus rectangle.
e.DrawFocus(rowBounds, true);
}
}
// Adjusts the padding when the user changes the row height so that
// the normal cell content is fully displayed and any extra
// height is used for the content that spans multiple columns.
void dataGridView1_RowHeightChanged(object sender,
DataGridViewRowEventArgs e)
{
// Calculate the new height of the normal cell content.
Int32 preferredNormalContentHeight =
e.Row.GetPreferredHeight(e.Row.Index,
DataGridViewAutoSizeRowMode.AllCellsExceptHeader, true) -
e.Row.DefaultCellStyle.Padding.Bottom;
Compilando o código
Este exemplo requer:
Confira também
DataGridView
DataGridView.RowPrePaint
DataGridView.RowPostPaint
Personalizando o controle DataGridView dos Windows Forms
Arquitetura de controle DataGridView
Como: Personalizar células e colunas no
controle DataGridView do Windows
Forms estendendo o comportamento e
a aparência
Artigo • 02/06/2023
No exemplo de código a seguir, você criará uma classe de célula personalizada chamada
DataGridViewRolloverCell que detecta quando o mouse entra e sai dos limites da
célula. Enquanto o mouse está dentro dos limites da célula, um retângulo de inserção é
desenhado. Esse novo tipo deriva DataGridViewTextBoxCell e se comporta em todos os
outros aspectos como sua classe base. A classe de coluna correspondente chama-se
DataGridViewRolloverColumn .
7 Observação
Este exemplo não funcionará corretamente se você adicionar linhas vazias. Linhas
vazias são criadas, por exemplo, quando você adiciona linhas ao controle definindo
a RowCount propriedade. Isso ocorre porque as linhas adicionadas neste caso são
compartilhadas automaticamente, o que significa que objetos
DataGridViewRolloverCell não são instanciados até você clicar em células
7 Observação
C#
C#
C#
entrar ou os deixar.
C#
// Force the cell to repaint itself when the mouse pointer enters it.
protected override void OnMouseEnter(int rowIndex)
{
this.DataGridView.InvalidateCell(this);
}
// Force the cell to repaint itself when the mouse pointer leaves it.
protected override void OnMouseLeave(int rowIndex)
{
this.DataGridView.InvalidateCell(this);
}
C#
Exemplo
O exemplo de código completo inclui um pequeno formulário de teste que demonstra
o comportamento do tipo de célula personalizado.
C#
using System;
using System.Drawing;
using System.Windows.Forms;
public Form1()
{
DataGridView dataGridView1 = new DataGridView();
DataGridViewRolloverCellColumn col =
new DataGridViewRolloverCellColumn();
dataGridView1.Columns.Add(col);
dataGridView1.Rows.Add(new string[] { "" });
dataGridView1.Rows.Add(new string[] { "" });
dataGridView1.Rows.Add(new string[] { "" });
dataGridView1.Rows.Add(new string[] { "" });
this.Controls.Add(dataGridView1);
this.Text = "DataGridView rollover-cell demo";
}
}
// Force the cell to repaint itself when the mouse pointer enters it.
protected override void OnMouseEnter(int rowIndex)
{
this.DataGridView.InvalidateCell(this);
}
// Force the cell to repaint itself when the mouse pointer leaves it.
protected override void OnMouseLeave(int rowIndex)
{
this.DataGridView.InvalidateCell(this);
}
Confira também
DataGridView
DataGridViewCell
DataGridViewColumn
Personalizando o controle DataGridView dos Windows Forms
Arquitetura de controle DataGridView
Tipos de coluna no controle DataGridView dos Windows Forms
Práticas recomendadas para dimensionamento do controle DataGridView dos
Windows Forms
Como: Desabilitar botões em uma
coluna de botão no controle
DataGridView do Windows Forms
Artigo • 02/06/2023
7 Observação
Exemplo
C#
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;
class Form1 : Form
{
private DataGridView dataGridView1 = new DataGridView();
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
public Form1()
{
this.AutoSize = true;
this.Load += new EventHandler(Form1_Load);
}
dataGridView1.CellValueChanged +=
new
DataGridViewCellEventHandler(dataGridView1_CellValueChanged);
dataGridView1.CurrentCellDirtyStateChanged +=
new EventHandler(dataGridView1_CurrentCellDirtyStateChanged);
dataGridView1.CellClick +=
new DataGridViewCellEventHandler(dataGridView1_CellClick);
this.Controls.Add(dataGridView1);
}
DataGridViewCheckBoxCell checkCell =
(DataGridViewCheckBoxCell)dataGridView1.
Rows[e.RowIndex].Cells["CheckBoxes"];
buttonCell.Enabled = !(Boolean)checkCell.Value;
dataGridView1.Invalidate();
}
}
if (buttonCell.Enabled)
{
MessageBox.Show(dataGridView1.Rows[e.RowIndex].
Cells[e.ColumnIndex].Value.ToString() +
" is enabled");
}
}
}
}
Compilando o código
Este exemplo requer:
Confira também
Personalizando o controle DataGridView dos Windows Forms
Arquitetura de controle DataGridView
Tipos de coluna no controle DataGridView dos Windows Forms
Como: Hospedar controles em células
DataGridView do Windows Forms
Artigo • 02/06/2023
O exemplo de código a seguir mostra como criar uma coluna de calendário. As células
dessa coluna exibem datas em células comuns da caixa de texto, mas quando o usuário
edita uma célula, um DateTimePicker controle é exibido. Para evitar a implementação da
funcionalidade de exibição da caixa de texto novamente,
CalendarCell DataGridViewTextBoxCell a classe deriva da classe em vez de herdar a
7 Observação
Exemplo
C#
using System;
using System.Windows.Forms;
public CalendarCell()
: base()
{
// Use the short date format.
this.Style.Format = "d";
}
return typeof(DateTime);
}
}
public CalendarEditingControl()
{
this.Format = DateTimePickerFormat.Short;
}
// Implements the
IDataGridViewEditingControl.EditingControlFormattedValue
// property.
public object EditingControlFormattedValue
{
get
{
return this.Value.ToShortDateString();
}
set
{
if (value is String)
{
try
{
// This will throw an exception of the string is
// null, empty, or not in the format of a date.
this.Value = DateTime.Parse((String)value);
}
catch
{
// In the case of an exception, just use the
// default value so we're not left with a null
// value.
this.Value = DateTime.Now;
}
}
}
}
// Implements the
// IDataGridViewEditingControl.GetEditingControlFormattedValue method.
public object GetEditingControlFormattedValue(
DataGridViewDataErrorContexts context)
{
return EditingControlFormattedValue;
}
// Implements the
// IDataGridViewEditingControl.ApplyCellStyleToEditingControl method.
public void ApplyCellStyleToEditingControl(
DataGridViewCellStyle dataGridViewCellStyle)
{
this.Font = dataGridViewCellStyle.Font;
this.CalendarForeColor = dataGridViewCellStyle.ForeColor;
this.CalendarMonthBackground = dataGridViewCellStyle.BackColor;
}
// Implements the
IDataGridViewEditingControl.EditingControlWantsInputKey
// method.
public bool EditingControlWantsInputKey(
Keys key, bool dataGridViewWantsInputKey)
{
// Let the DateTimePicker handle the keys listed.
switch (key & Keys.KeyCode)
{
case Keys.Left:
case Keys.Up:
case Keys.Down:
case Keys.Right:
case Keys.Home:
case Keys.End:
case Keys.PageDown:
case Keys.PageUp:
return true;
default:
return !dataGridViewWantsInputKey;
}
}
// Implements the
IDataGridViewEditingControl.PrepareEditingControlForEdit
// method.
public void PrepareEditingControlForEdit(bool selectAll)
{
// No preparation needs to be done.
}
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new Form1());
}
public Form1()
{
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(this.dataGridView1);
this.Load += new EventHandler(Form1_Load);
this.Text = "DataGridView calendar column demo";
}
Compilando o código
O exemplo a seguir requer:
Referências aos assemblies System e System.Windows.Forms.
Confira também
DataGridView
DataGridViewColumn
DataGridViewCell
DataGridViewTextBoxCell
IDataGridViewEditingControl
DateTimePicker
Personalizando o controle DataGridView dos Windows Forms
Arquitetura de controle DataGridView
Tipos de coluna no controle DataGridView dos Windows Forms
Ajuste de desempenho no controle
DataGridView dos Windows Forms
Artigo • 02/06/2023
Nesta seção
Práticas recomendadas para dimensionamento do controle DataGridView dos Windows
Forms
Descreve como usar o controle DataGridView de uma maneira que evite penalidades no
desempenho e no uso de memória desnecessário ao trabalhar com grandes
quantidades de dados.
Referência
DataGridView
Fornece a documentação de referência para o DataGridView controle.
VirtualMode
Fornece a documentação de referência para a VirtualMode propriedade.
Confira também
Controle DataGridView
Modos de exibição dos dados no controle DataGridView dos Windows Forms
Práticas recomendadas para
dimensionamento do controle
DataGridView dos Windows Forms
Artigo • 02/06/2023
Evite criar menus de atalho para células e linhas individuais. Isso inclui o modelo
de linha, que é clonado juntamente com o menu de atalho quando novas linhas
são adicionadas ao controle. Para obter escalabilidade máxima, use apenas a
propriedade do ContextMenuStrip controle para especificar um único menu de
atalho para todo o controle.
Se você precisar de vários menus de atalho para várias linhas ou células, lide com
os eventos ou RowContextMenuStripNeeded as CellContextMenuStripNeeded
linhas. Esses eventos permitem gerenciar os objetos do menu de atalho por conta
própria, possibilitando ajustar o desempenho.
Usando o Redimensionamento Automático
com Eficiência
Cabeçalhos, colunas e linhas podem ser redimensionados automaticamente como
alterações de conteúdo da célula para que todo o conteúdo das células seja exibido
sem recorte. Alterar os modos de dimensionamento também pode redimensionar
linhas, colunas e cabeçalhos. Para determinar o tamanho correto, o DataGridView
controle deve examinar o valor de cada célula que deve acomodar. Ao trabalhar com
grandes conjuntos de dados, essa análise poderá afetar negativamente o desempenho
do controle quando o redimensionamento automático ocorrer. Para evitar penalidades
de desempenho, use as seguintes diretrizes:
Para obter mais informações, consulte Sizing Options in the Windows Forms
DataGridView Control (Opções de dimensionamento no controle DataGridView dos
Windows Forms).
Uma linha não poderá ser compartilhada em um controle não associado DataGridView
se qualquer uma de suas células contiver valores. Quando o DataGridView controle está
associado a uma fonte de dados externa ou quando você implementa o modo virtual e
fornece sua própria fonte de dados, os valores de célula são armazenados fora do
controle e não em objetos de célula, permitindo que as linhas sejam compartilhadas.
Por exemplo, uma linha não pode ser compartilhada em nenhuma das seguintes
situações:
A linha contém uma única célula selecionada que não está em uma coluna
selecionada.
coleção.
Para impedir que as linhas se tornem não compartilhadas, use as seguintes diretrizes:
Evite indexar a Rows coleção ou iterar por meio dela com um foreach loop.
Normalmente não será necessário acessar as linhas diretamente. DataGridView
métodos que operam em linhas levam argumentos de índice de linha em vez de
instâncias de linha. Além disso, os manipuladores de eventos relacionados à linha
recebem objetos de argumento de evento com propriedades de linha que você
pode usar para manipular linhas sem fazer com que elas se tornem não
compartilhadas.
Evite modos de seleção com base em célula. Esses modos fazem com que as linhas
se tornem não compartilhadas. Em vez disso, defina a
DataGridView.SelectionMode propriedade como
DataGridViewSelectionMode.FullRowSelect ou
DataGridViewSelectionMode.FullColumnSelect.
Confira também
DataGridView
Ajuste de desempenho no controle DataGridView dos Windows Forms
Modo virtual no controle DataGridView dos Windows Forms
Modos de exibição dos dados no controle DataGridView dos Windows Forms
Estilos de célula no controle DataGridView dos Windows Forms
Como: Definir estilos de célula padrão para o controle DataGridView do Windows
Forms
Dimensionando opções no controle DataGridView dos Windows Forms
Modo virtual no controle DataGridView
dos Windows Forms
Artigo • 02/06/2023
Com o modo virtual, você pode gerenciar a interação entre o DataGridView controle e
um cache de dados personalizado. Para implementar o modo virtual, defina a
VirtualMode propriedade true como e manipule um ou mais dos eventos descritos
neste tópico. Você normalmente manipulará pelo menos o evento CellValueNeeded , que
permite os valores de consulta do controle no cache de dados.
Como as colunas não associadas estão fora da fonte de dados, elas são ignoradas por
operações de classificação da fonte de dados. Portanto, ao habilitar a classificação no
modo misto, você deve gerenciar os dados não associados em um cache local e
implementar o modo virtual para permitir que o DataGridView controle interaja com ele.
Para obter mais informações sobre como usar o modo virtual para manter os valores em
colunas não associadas, consulte os exemplos nos
DataGridViewCheckBoxColumn.ThreeState tópicos de referência de propriedade e
System.Windows.Forms.DataGridViewComboBoxColumn classe.
Para obter mais informações sobre como usar o modo virtual em um cenário Just-In-
Time, consulte Implementando o modo virtual com o carregamento de dados Just-In-
Time no controle DataGridView dos Windows Forms.
Alguns eventos padrão DataGridView (como eventos que ocorrem quando os usuários
adicionam ou excluem linhas ou quando valores de célula são editados, analisados,
validados ou formatados) também são úteis no modo virtual. Você também pode
manipular eventos que lhe permitam manter valores que geralmente não são
armazenados em uma fonte de dados associada, como o texto de dica de ferramenta da
célula, texto de erro de linha e célula, célula e dados de menu de atalho da linha e
dados de altura de linha.
Para mais informações sobre como implementar o modo virtual para gerenciar os dados
de leitura/gravação com um escopo de confirmação de nível de linha, consulte Passo a
passo: implementando o modo virtual no controle DataGridView dos Windows Forms.
Para obter um exemplo que implementa o modo virtual com um escopo de confirmação
no nível da célula, consulte o tópico de referência da VirtualMode propriedade.
Evento Descrição
CellValuePushed Usado pelo controle para confirmar a entrada do usuário de uma célula
para o cache de dados. Esse evento ocorre somente para células em
colunas não associadas.
NewRowNeeded Usado pelo controle para indicar a necessidade de uma nova linha no
cache de dados.
RowDirtyStateNeeded Usado pelo controle para determinar se uma linha tem alterações não
confirmadas.
CancelRowEdit Usado pelo controle para indicar que uma linha deve ser revertida para
seus valores armazenados em cache.
Os eventos a seguir são úteis no modo virtual, mas podem ser usados
independentemente da configuração da VirtualMode propriedade.
Eventos DESCRIÇÃO
UserDeletingRow Usado pelo controle para indicar quando as linhas são excluídas
ou adicionadas, permitindo a atualização do cache de dados
UserDeletedRow adequadamente.
RowsRemoved
RowsAdded
CellValidating
CellValidated
RowValidating
RowValidated
Eventos DESCRIÇÃO
Confira também
DataGridView
VirtualMode
Ajuste de desempenho no controle DataGridView dos Windows Forms
Práticas recomendadas para dimensionamento do controle DataGridView dos
Windows Forms
Passo a passo: Implementando o modo virtual no controle DataGridView do
Windows Forms
Implementando o modo virtual com carregamento de dados Just-In-Time no
controle DataGridView dos Windows Forms
Passo a passo: Implementando o modo
virtual no controle DataGridView do
Windows Forms
Artigo • 02/06/2023
O DataGridView controle fornece vários eventos que você pode manipular para interagir
com um armazenamento de dados personalizado. Este passo a passo orienta você ao
longo do processo de implementar esses manipuladores de eventos. O exemplo de
código neste tópico usa uma fonte de dados muito simples para fins de ilustração. Em
uma configuração de produção, você normalmente carregará apenas as linhas que
precisa exibir em um cache e manipulará DataGridView eventos com os quais interagir e
atualizar o cache. Para obter mais informações, consulte Implementando o modo virtual
com carregamento de dados Just-In-Time no controle DataGridView dos Windows
Forms
Para copiar o código deste tópico como uma única lista, consulte Como implementar o
modo virtual no controle DataGridView dos Windows Forms.
Criando o formulário
O código a seguir contém uma inicialização básica. Ele declara algumas variáveis
que serão usadas em etapas posteriores, fornece um método Main e fornece um
layout de formulário simples no construtor da classe.
C#
using System;
using System.Windows.Forms;
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new Form1());
}
public Form1()
{
// Initialize the form.
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(this.dataGridView1);
this.Load += new EventHandler(Form1_Load);
this.Text = "DataGridView virtual-mode demo (row-level commit
scope)";
}
C#
C#
DataGridViewCellValueEventHandler(dataGridView1_CellValuePushed);
this.dataGridView1.NewRowNeeded += new
DataGridViewRowEventHandler(dataGridView1_NewRowNeeded);
this.dataGridView1.RowValidated += new
DataGridViewCellEventHandler(dataGridView1_RowValidated);
this.dataGridView1.RowDirtyStateNeeded += new
QuestionEventHandler(dataGridView1_RowDirtyStateNeeded);
this.dataGridView1.CancelRowEdit += new
QuestionEventHandler(dataGridView1_CancelRowEdit);
this.dataGridView1.UserDeletingRow += new
DataGridViewRowCancelEventHandler(dataGridView1_UserDeletingRow);
// Set the row count, including the row for new records.
this.dataGridView1.RowCount = 4;
}
Esse evento ocorre sempre que o DataGridView controle precisa pintar uma célula.
C#
// Set the cell value to paint using the Customer object retrieved.
switch (this.dataGridView1.Columns[e.ColumnIndex].Name)
{
case "Company Name":
e.Value = customerTmp.CompanyName;
break;
C#
Esse evento ocorre sempre que o usuário insere a linha de novos registros.
C#
C#
C#
C#
Esse evento ocorre sempre que o usuário exclui uma linha clicando em um
cabeçalho de linha e pressionando a tecla DELETE.
C#
if (e.Row.Index == this.rowInEdit)
{
// If the user has deleted a newly created row, release
// the corresponding Customer object.
this.rowInEdit = -1;
this.customerInEdit = null;
}
}
10. Implemente uma classe Customers simples para representar os itens de dados
usados por este exemplo de código.
C#
public Customer()
{
// Leave fields empty.
}
Próximas etapas
Este aplicativo fornece uma compreensão básica dos eventos que você deve tratar para
implementar o DataGridView modo virtual no controle. É possível aprimorar esse
aplicativo básico de várias maneiras:
Confira também
DataGridView
VirtualMode
CellValueNeeded
CellValuePushed
NewRowNeeded
RowValidated
RowDirtyStateNeeded
CancelRowEdit
UserDeletingRow
Ajuste de desempenho no controle DataGridView dos Windows Forms
Práticas recomendadas para dimensionamento do controle DataGridView dos
Windows Forms
Implementando o modo virtual com carregamento de dados Just-In-Time no
controle DataGridView dos Windows Forms
Como: Implementar o modo virtual no controle DataGridView do Windows Forms
Como: Implementar o modo virtual no
controle DataGridView do Windows
Forms
Artigo • 02/06/2023
Para obter uma explicação completa deste exemplo de código, consulte Passo a passo:
implementando o modo virtual no controle DataGridView Windows Forms.
Exemplo
C#
using System;
using System.Windows.Forms;
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new Form1());
}
public Form1()
{
// Initialize the form.
this.dataGridView1.Dock = DockStyle.Fill;
this.Controls.Add(this.dataGridView1);
this.Load += new EventHandler(Form1_Load);
this.Text = "DataGridView virtual-mode demo (row-level commit
scope)";
}
DataGridViewCellValueEventHandler(dataGridView1_CellValueNeeded);
this.dataGridView1.CellValuePushed += new
DataGridViewCellValueEventHandler(dataGridView1_CellValuePushed);
this.dataGridView1.NewRowNeeded += new
DataGridViewRowEventHandler(dataGridView1_NewRowNeeded);
this.dataGridView1.RowValidated += new
DataGridViewCellEventHandler(dataGridView1_RowValidated);
this.dataGridView1.RowDirtyStateNeeded += new
QuestionEventHandler(dataGridView1_RowDirtyStateNeeded);
this.dataGridView1.CancelRowEdit += new
QuestionEventHandler(dataGridView1_CancelRowEdit);
this.dataGridView1.UserDeletingRow += new
DataGridViewRowCancelEventHandler(dataGridView1_UserDeletingRow);
// Set the row count, including the row for new records.
this.dataGridView1.RowCount = 4;
}
// Set the cell value to paint using the Customer object retrieved.
switch (this.dataGridView1.Columns[e.ColumnIndex].Name)
{
case "Company Name":
e.Value = customerTmp.CompanyName;
break;
if (e.Row.Index == this.rowInEdit)
{
// If the user has deleted a newly created row, release
// the corresponding Customer object.
this.rowInEdit = -1;
this.customerInEdit = null;
}
}
}
public Customer()
{
// Leave fields empty.
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
VirtualMode
CellValueNeeded
CellValuePushed
NewRowNeeded
RowValidated
RowDirtyStateNeeded
CancelRowEdit
UserDeletingRow
Passo a passo: Implementando o modo virtual no controle DataGridView do
Windows Forms
Ajuste de desempenho no controle DataGridView dos Windows Forms
Modo virtual no controle DataGridView dos Windows Forms
Implementando o modo virtual com
carregamento de dados Just-In-Time no
controle DataGridView dos Windows
Forms
Artigo • 02/06/2023
Se estiver trabalhando com uma tabela muito grande em um banco de dados remoto,
por exemplo, talvez você queira evitar atrasos de inicialização recuperando somente os
dados necessários para exibição e recuperando dados adicionais somente quando o
usuário rolar novas linhas para a área de exibição. Se os computadores cliente que estão
executando seu aplicativo tiverem uma quantidade limitada de memória disponível para
armazenar dados, você também pode querer descartar dados não utilizados quando
recuperar novos valores do banco de dados.
As seções a seguir descrevem como usar um DataGridView controle com um cache just-
in-time.
Para copiar o código neste tópico como uma única listagem, consulte Como
implementar o modo virtual com carregamento de dados Just-In-Time no controle
DataGridView dos Windows Forms.
O formulário
O exemplo de código a seguir define um formulário que contém um controle somente
DataGridView leitura que interage com um Cache objeto por meio de um
CellValueNeeded manipulador de eventos. O objeto Cache gerencia os valores
armazenados localmente e usa um objeto DataRetriever para recuperar valores da
tabela Orders do banco de dados de exemplo Northwind. O DataRetriever objeto, que
implementa a IDataPageRetriever interface exigida pela Cache classe, também é usado
para inicializar as DataGridView linhas e colunas de controle.
C#
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Windows.Forms;
DataGridViewCellValueEventHandler(dataGridView1_CellValueNeeded);
base.OnLoad(e);
}
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new VirtualJustInTimeDemo());
}
}
A Interface IDataPageRetriever
O exemplo de código a seguir define a interface IDataPageRetriever , que é
implementada pela classe DataRetriever . O único método declarado nessa interface é o
método SupplyPageOfData , que requer um índice de linhas inicial e uma contagem do
número de linhas em uma única página de dados. Esses valores são usados pelo
implementador para recuperar um subconjunto de dados de uma fonte de dados.
Um objeto Cache usa uma implementação dessa interface durante a construção para
carregar duas páginas iniciais de dados. Sempre que um valor fora do cache é
necessário, o cache descarta uma dessas páginas e solicita uma nova página que
contém o valor do IDataPageRetriever .
C#
A classe DataRetriever
O exemplo de código a seguir define a classe DataRetriever , que implementa a
interface IDataPageRetriever para recuperar páginas de dados de um servidor. A
DataRetriever classe também fornece Columns e RowCount propriedades, que o
DataGridView controle usa para criar as colunas necessárias e para adicionar o número
apropriado de linhas vazias à Rows coleção. Adicionar as linhas vazias é necessário para
que o controle se comporte como se contivesse todos os dados na tabela. Isso significa
que a caixa de rolagem na barra de rolagem terá o tamanho apropriado e o usuário será
capaz de acessar qualquer linha na tabela. As linhas são preenchidas pelo
CellValueNeeded manipulador de eventos somente quando são roladas para exibição.
C#
commaSeparatedListOfColumnNamesValue =
commaSeparatedColumnNames.ToString();
return commaSeparatedListOfColumnNamesValue;
}
}
if (!this.Columns[columnToSortBy].Unique)
{
throw new InvalidOperationException(String.Format(
"Column {0} must contain unique values.", columnToSortBy));
}
A classe Cache
O exemplo de código a seguir define a classe Cache , que gerencia duas páginas de
dados preenchidas por meio de uma implementação de IDataPageRetriever . A Cache
classe define uma estrutura interna DataPage , que contém um DataTable para
armazenar os valores em uma única página de cache e que calcula os índices de linha
que representam os limites superior e inferior da página.
A classe Cache carrega duas páginas de dados no momento da construção. Sempre que
o CellValueNeeded evento solicita um valor, o Cache objeto determina se o valor está
disponível em uma de suas duas páginas e, se for o caso, o retorna. Se o valor não
estiver disponível localmente, o objeto Cache determinará qual das duas páginas está
mais distante das linhas exibidas atualmente e substituirá a página por uma nova, que
contém o valor solicitado que, então, é retornado.
Supondo que o número de linhas em uma página de dados seja igual ao número de
linhas que podem ser exibidas na tela de uma só vez, esse modelo permite que os
usuários que estão percorrendo a tabela por paginação retornem para a página exibida
mais recentemente.
C#
// Sets the value of the element parameter if the value is in the cache.
private bool IfPageCached_ThenSetElement(int rowIndex,
int columnIndex, ref string element)
{
if (IsRowCachedInPage(0, rowIndex))
{
element = cachePages[0].table
.Rows[rowIndex % RowsPerPage][columnIndex].ToString();
return true;
}
else if (IsRowCachedInPage(1, rowIndex))
{
element = cachePages[1].table
.Rows[rowIndex % RowsPerPage][columnIndex].ToString();
return true;
}
return false;
}
// Returns the index of the cached page most distant from the given
index
// and therefore least likely to be reused.
private int GetIndexToUnusedPage(int rowIndex)
{
if (rowIndex > cachePages[0].HighestIndex &&
rowIndex > cachePages[1].HighestIndex)
{
int offsetFromPage0 = rowIndex - cachePages[0].HighestIndex;
int offsetFromPage1 = rowIndex - cachePages[1].HighestIndex;
if (offsetFromPage0 < offsetFromPage1)
{
return 1;
}
return 0;
}
else
{
int offsetFromPage0 = cachePages[0].LowestIndex - rowIndex;
int offsetFromPage1 = cachePages[1].LowestIndex - rowIndex;
if (offsetFromPage0 < offsetFromPage1)
{
return 1;
}
return 0;
}
}
Considerações adicionais
Os exemplos de código anteriores são fornecidos como uma demonstração de
carregamento de dados Just-In-Time. Você precisará modificar o código de acordo com
suas necessidades alcançar a máxima eficiência. No mínimo, você precisará escolher um
valor apropriado para o número de linhas por página de dados no cache. Esse valor é
passado para o construtor Cache . O número de linhas por página não deve ser menor
do que o número de linhas que podem ser exibidas simultaneamente em seu
DataGridView controle.
Para obter melhores resultados, você precisará realizar testes de desempenho e testes
de usabilidade para determinar os requisitos do sistema e de seus usuários. Os diversos
fatores que você precisará levar em consideração incluem a quantidade de memória nas
máquinas cliente que executam seu aplicativo, a largura de banda disponível da
conexão de rede usada e a latência do servidor usado. A largura de banda e a latência
devem ser determinadas em momentos de pico.
Confira também
DataGridView
VirtualMode
Ajuste de desempenho no controle DataGridView dos Windows Forms
Práticas recomendadas para dimensionamento do controle DataGridView dos
Windows Forms
Modo virtual no controle DataGridView dos Windows Forms
Passo a passo: Implementando o modo virtual no controle DataGridView do
Windows Forms
Como: Implementar o modo virtual com carregamento de dados Just-In-Time no
controle DataGridView do Windows Forms
Como: Implementar o modo virtual com
carregamento de dados Just-In-Time no
controle DataGridView do Windows
Forms
Artigo • 02/06/2023
Exemplo
C#
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Windows.Forms;
DataGridViewCellValueEventHandler(dataGridView1_CellValueNeeded);
base.OnLoad(e);
}
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new VirtualJustInTimeDemo());
}
}
commaSeparatedListOfColumnNamesValue =
commaSeparatedColumnNames.ToString();
return commaSeparatedListOfColumnNamesValue;
}
}
if (!this.Columns[columnToSortBy].Unique)
{
throw new InvalidOperationException(String.Format(
"Column {0} must contain unique values.", columnToSortBy));
}
// Sets the value of the element parameter if the value is in the cache.
private bool IfPageCached_ThenSetElement(int rowIndex,
int columnIndex, ref string element)
{
if (IsRowCachedInPage(0, rowIndex))
{
element = cachePages[0].table
.Rows[rowIndex % RowsPerPage][columnIndex].ToString();
return true;
}
else if (IsRowCachedInPage(1, rowIndex))
{
element = cachePages[1].table
.Rows[rowIndex % RowsPerPage][columnIndex].ToString();
return true;
}
return false;
}
// Returns the index of the cached page most distant from the given
index
// and therefore least likely to be reused.
private int GetIndexToUnusedPage(int rowIndex)
{
if (rowIndex > cachePages[0].HighestIndex &&
rowIndex > cachePages[1].HighestIndex)
{
int offsetFromPage0 = rowIndex - cachePages[0].HighestIndex;
int offsetFromPage1 = rowIndex - cachePages[1].HighestIndex;
if (offsetFromPage0 < offsetFromPage1)
{
return 1;
}
return 0;
}
else
{
int offsetFromPage0 = cachePages[0].LowestIndex - rowIndex;
int offsetFromPage1 = cachePages[1].LowestIndex - rowIndex;
if (offsetFromPage0 < offsetFromPage1)
{
return 1;
}
return 0;
}
}
Compilando o código
Este exemplo requer:
Confira também
DataGridView
VirtualMode
CellValueNeeded
Implementando o modo virtual com carregamento de dados Just-In-Time no
controle DataGridView dos Windows Forms
Ajuste de desempenho no controle DataGridView dos Windows Forms
Modo virtual no controle DataGridView dos Windows Forms
Comportamento padrão de teclado e
mouse com o controle DataGridView
Artigo • 21/06/2023
7 Observação
Tecla ou Descrição
combinação de
teclas
Seta para baixo Move o foco para a célula diretamente abaixo da célula atual. Se o foco
estiver na última linha, não fará nada.
Seta para a Move o foco para a célula anterior na linha. Se o foco estiver na primeira
esquerda
célula na linha, não fará nada.
Seta para a Move o foco para a próxima célula na linha. Se o foco estiver na última
direita
célula na linha, não fará nada.
Seta para cima Move o foco para a célula diretamente acima da célula atual. Se o foco
estiver na primeira linha, não fará nada.
Página para Rola o controle para baixo pelo número de linhas que são totalmente
baixo
exibidas. Move o foco para a última linha totalmente exibida sem alterar as
colunas.
Página para cima Rola o controle para cima pelo número de linhas que são totalmente
exibidas. Move o foco para a primeira linha exibida sem alterar as colunas.
Shift + Tab Se o valor da StandardTab propriedade for false , moverá o foco para a
célula anterior na linha atual. Se o foco já estiver na primeira célula da linha,
moverá o foco para a última célula da linha anterior. Se o foco estiver na
primeira célula no controle, moverá o foco para o controle anterior na
ordem de tabulação do contêiner pai.
Ctrl + Tab Se o valor da StandardTab propriedade for false , moverá o foco para o
próximo controle na ordem de tabulação do contêiner pai.
Ctrl + Shift + Se o valor da StandardTab propriedade for false , moverá o foco para o
Tab controle anterior na ordem de tabulação do contêiner pai.
Ctrl + Seta Move o foco para a célula mais distante na direção da seta.
Enter Confirma as alterações feitas na célula e na linha atuais e move o foco para a
célula diretamente abaixo da célula atual. Se o foco estiver na última linha,
confirmará as alterações sem mover o foco.
CTRL + ENTER Confirma as alterações na célula atual sem mover o foco. Também confirma
as alterações na linha atual se o controle estiver associado a uma fonte de
dados que dá suporte à edição ou se o modo virtual tiver sido
implementado com escopo de confirmação de nível de linha.
CTRL + 0 Insere um DBNull.Value valor na célula atual se a célula puder ser editada.
Por padrão, o valor de exibição de um DBNull valor de célula é o valor da
NullValue propriedade do DataGridViewCellStyle em vigor para a célula
atual.
Chaves de seleção
Se a MultiSelect propriedade estiver definida false como e a SelectionMode
propriedade estiver definida CellSelectcomo , alterar a célula atual usando as chaves de
navegação alterará a seleção para a nova célula. As teclas Shift , Ctrl e Alt não
afetam esse comportamento.
7 Observação
Clicar em uma célula com o botão esquerdo do mouse sempre altera a célula atual.
Clicar em uma célula com o botão direito do mouse abre um menu de atalho,
quando disponível.
Botão esquerdo do mouse para Torna a célula clicada a célula atual e gera o
baixo DataGridView.CellMouseDown evento.
Seleção de mouse
Nenhum comportamento de seleção está associado com o botão do meio ou botão de
rolagem do mouse.
Clique Selecionará apenas a célula atual se o usuário clicar em uma célula. Nenhum
comportamento de seleção se o usuário clicar em um cabeçalho de linha ou de
coluna.
Se MultiSelect estiver definido como true , clicar em uma célula enquanto pressiona
Ctrl ou Shift modificará uma seleção de várias células.
Quando você clica em uma célula enquanto pressiona Ctrl , a célula altera seu estado
de seleção enquanto todas as outras células mantêm o estado de seleção atual.
Quando você clica em uma célula ou em uma série de células enquanto pressiona Shift
, a seleção inclui todas as células entre a célula atual e uma célula âncora localizada na
posição da célula atual antes do primeiro clique. Quando você clica e arrasta o ponteiro
por várias células, a célula âncora é a célula clicada no início da operação de arrastar. Os
cliques subsequentes ao pressionar Shift alteram a célula atual, mas não a célula de
âncora. As outras células no controle permanecerão selecionadas se já tiverem sido
selecionadas, mas poderão ficar não selecionadas se a navegação do mouse colocá-las
temporariamente entre a célula âncora e a célula atual.
Confira também
DataGridView
Controle DataGridView
Diferenças entre os controles
DataGridView e DataGrid dos Windows
Forms
Artigo • 02/06/2023
Recurso de Descrição
controle
DataGridView
Vários tipos de O DataGridView controle fornece tipos de coluna mais integrados do que o
coluna DataGrid controle . Esses tipos de coluna atendem às necessidades dos
cenários mais comuns, mas também são mais fáceis de estender ou substituir
do que os tipos de coluna no DataGrid controle. Para obter mais informações,
consulte Tipos de coluna no controle DataGridView dos Windows Forms.
Várias maneiras O DataGrid controle está limitado a exibir dados de uma fonte de dados
de exibir dados externa. No DataGridView entanto, o controle pode exibir dados não
vinculados armazenados no controle, dados de uma fonte de dados vinculada
ou dados vinculados e não vinculados. Você também pode implementar o
modo virtual no controle DataGridView para fornecer gerenciamento de dados
personalizado. Para obter mais informações, consulte Modos de exibição dos
dados no controle DataGridView dos Windows Forms.
Várias opções O DataGridView controle permite que você trabalhe com componentes de
para alterar o grade individuais de várias maneiras. Por exemplo, você pode congelar linhas e
comportamento colunas para evitar que elas rolem; ocultar linhas, colunas e cabeçalhos; alterar
e a aparência o modo como os tamanhos de linha, coluna e cabeçalho são ajustados; alterar
de célula, linha, a maneira como os usuários fazem seleções; e fornecer Dicas de Ferramentas e
coluna e menus de atalho para células, linhas e colunas individuais.
cabeçalho
O DataGrid controle é mantido para compatibilidade com backward e para
necessidades especiais. Para quase todas as finalidades, você deve usar o DataGridView
controle . O único recurso disponível DataGrid no controle que não está disponível no
controle é a DataGridView exibição hierárquica de informações de duas tabelas
relacionadas em um único controle. Você deve usar dois controles DataGridView para
exibir informações de duas tabelas que estão em uma relação mestre/detalhes.
Como o DataGridView controle tem uma arquitetura totalmente nova, não há nenhum
caminho de conversão simples que permitirá que você use DataGrid personalizações
com o DataGridView controle . No DataGrid entanto, muitas personalizações são
DataGridView desnecessárias com o controle, devido aos recursos integrados
disponíveis no novo controle. Se você tiver criado tipos de coluna personalizados
DataGridDataGridView para o controle que deseja usar com o controle , será preciso
implementá-los novamente usando a nova arquitetura. Para obter mais informações,
consulte Personalizando o controle DataGridView dos Windows Forms.
Confira também
DataGridView
DataGrid
BindingSource
Controle DataGridView
Controle DataGrid
Componente BindingSource
Tipos de coluna no controle DataGridView dos Windows Forms
Estilos de célula no controle DataGridView dos Windows Forms
Modos de exibição dos dados no controle DataGridView dos Windows Forms
Formatação de dados no controle DataGridView dos Windows Forms
Dimensionando opções no controle DataGridView dos Windows Forms
Modos de classificação da coluna no controle DataGridView dos Windows Forms
Modos de seleção no controle DataGridView dos Windows Forms
Personalizando o controle DataGridView dos Windows Forms
Controle DateTimePicker (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do controle DateTimePicker
Apresenta os conceitos gerais do DateTimePicker controle, que permite aos usuários
selecionar um único item de uma lista de datas ou horas.
Referência
DateTimePicker
Descreve essa classe e tem links para todos os seus membros.
MonthCalendar
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Controle MonthCalendar
Apresenta uma interface gráfica intuitiva para os usuários exibirem e definirem as
informações de data.
Visão geral do controle DateTimePicker
(Windows Forms)
Artigo • 02/06/2023
Propriedades da chave
Se você quiser que ele DateTimePicker apareça como um controle para escolher ou
editar horários em vez de datas, defina a ShowUpDown propriedade true como e a
Format propriedade como Time. Para obter mais informações, consulte Como exibir a
hora com o controle DateTimePicker.
Confira também
Como: Exibir uma data em um formato personalizado com o controle
DateTimePicker do Windows Forms
Como: Definir e retornar datas com o controle DateTimePicker do Windows Forms
Como: Exibir uma data em um formato
personalizado com o controle
DateTimePicker do Windows Forms
Artigo • 02/06/2023
C#
dateTimePicker1.Format = DateTimePickerFormat.Custom;
// Display the date as "Mon 27 Feb 2012".
dateTimePicker1.CustomFormat = "ddd dd MMM yyyy";
C#
Confira também
Controle DateTimePicker
Como: Definir e retornar datas com o controle DateTimePicker do Windows Forms
Como: Definir e retornar datas com o
controle DateTimePicker do Windows
Forms
Artigo • 21/06/2023
A Value propriedade retorna uma DateTime estrutura como seu valor. Há várias
propriedades da DateTime estrutura que retornam informações específicas sobre a data
exibida. Essas propriedades só podem ser usadas para retornar um valor; não as utilize
para definir um valor.
C#
C#
Confira também
Controle DateTimePicker
Como: Exibir uma data em um formato personalizado com o controle
DateTimePicker do Windows Forms
Como: Exibir a hora com o controle
DateTimePicker
Artigo • 02/06/2023
Se você quiser que o aplicativo permita que os usuários selecionem uma data e hora e
exibam essa data e hora no formato especificado, use o DateTimePicker controle. O
procedimento a seguir mostra como usar o DateTimePicker controle para exibir a hora.
C#
timePicker.Format = DateTimePickerFormat.Time;
C#
timePicker.ShowUpDown = true;
Exemplo
O exemplo de código a seguir mostra como criar um DateTimePicker que permite que
os usuários escolham apenas um tempo.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TimePickerApplication
{
public class Form1 : Form
{
public Form1()
{
InitializeTimePicker();
}
private DateTimePicker timePicker;
Compilando o código
Este exemplo requer:
Confira também
Controle DateTimePicker
Controles e componentes da caixa de
diálogo (Windows Forms)
Artigo • 02/06/2023
Referência
ColorDialog
Fornece informações de referência sobre a ColorDialog classe e seus membros.
FontDialog
Fornece informações de referência sobre a FontDialog classe e seus membros.
OpenFileDialog
Fornece informações de referência sobre a OpenFileDialog classe e seus membros.
PageSetupDialog
Fornece informações de referência sobre a PageSetupDialog classe e seus membros.
PrintDialog
Fornece informações de referência sobre a PrintDialog classe e seus membros.
PrintPreviewDialog
Fornece informações de referência sobre a PrintPreviewDialog classe e seus membros.
SaveFileDialog
Fornece informações de referência sobre a SaveFileDialog classe e seus membros.
Seções relacionadas
Caixas de diálogo no Windows Forms
Descreve como criar uma caixa de diálogo para um Windows Form.
Este controle exibe somente sequências de texto. Se você quiser um controle que exiba
valores numéricos, use o NumericUpDown controle. Para obter mais informações,
consulte NumericUpDown Control .
Nesta seção
Visão geral do controle DomainUpDown
Apresenta os conceitos gerais do controle, que DomainUpDown permite que os
usuários naveguem e selecionem uma lista de cadeias de caracteres de texto.
NumericUpDown
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle DomainUpDown
(Windows Forms)
Artigo • 02/06/2023
7 Observação
Propriedades da chave
As principais propriedades do controle são Items, ReadOnlye Wrap. A Items propriedade
contém a lista de objetos cujos valores de texto são exibidos no controle. Se ReadOnly
estiver definido como false , o controle concluirá automaticamente o texto que o
usuário digita e o corresponde a um valor na lista. Se Wrap estiver definido como true ,
rolar para além do último item levará você para o primeiro item da lista e vice-versa. Os
principais métodos do controle são UpButton e DownButton.
Este controle exibe somente sequências de texto. Se você quiser um controle que exiba
valores numéricos, use o NumericUpDown controle. Para mais informação, consulte
Visão geral do controle NumericUpDown.
Confira também
DomainUpDown
Controle DomainUpDown
Como adicionar itens a controles
DomainUpDown dos Windows Forms de
forma programática
Artigo • 02/06/2023
C#
domainUpDown1.Items.Add("noodles");
-ou-
2. Use o Insert método para inserir um item na lista em uma posição especificada.
C#
Confira também
DomainUpDown
DomainUpDown.DomainUpDownItemCollection.Add
ArrayList.Insert
Controle DomainUpDown
Visão geral do controle DomainUpDown
Como: Remover itens de controles
DomainUpDown do Windows Forms
Artigo • 02/06/2023
C#
domainUpDown1.Items.Remove("noodles");
-ou-
C#
Confira também
DomainUpDown
DomainUpDown.DomainUpDownItemCollection.Remove
DomainUpDown.DomainUpDownItemCollection.RemoveAt
Controle DomainUpDown
Visão geral do controle DomainUpDown
Componente ErrorProvider (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do componente ErrorProvider
Explica o que é esse componente e seus principais recursos e propriedades.
Referência
ErrorProvider
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do componente
ErrorProvider (Windows Forms)
Artigo • 02/06/2023
Propriedades da chave
As ErrorProvider principais propriedades do componente são DataSource,
ContainerControle Icon. Ao usar ErrorProvider o componente com controles associados
a dados, a ContainerControl propriedade deve ser definida como o contêiner
apropriado (geralmente o Formulário do Windows) para que o componente exiba um
ícone de erro no formulário. Quando o componente é adicionado no designer, a
ContainerControl propriedade é definida como o formulário que contém; se você
adicionar o controle no código, você deverá defini-lo por conta própria.
A Icon propriedade pode ser definida como um ícone de erro personalizado em vez do
padrão. Quando a DataSource propriedade é definida, o ErrorProvider componente
pode exibir mensagens de erro para um conjunto de dados. O método chave do
ErrorProvider componente é o SetError método, que especifica a cadeia de caracteres
de mensagem de erro e onde o ícone de erro deve aparecer.
7 Observação
Confira também
ErrorProvider
Como: Exibir erros dentro de um DataSet com o componente ErrorProvider do
Windows Forms
Como: Exibir ícones de erro para validação de formulário com o componente
ErrorProvider do Windows Forms
Como: Exibir ícones de erro para
validação de formulário com o
componente ErrorProvider do Windows
Forms
Artigo • 02/06/2023
Você pode usar um componente Windows Forms ErrorProvider para exibir um ícone de
erro quando o usuário insere dados inválidos. Você deve ter pelo menos dois controles
no formulário para alternar entre eles e, portanto, invocar o código de validação.
O código a seguir testa a validade dos dados que o usuário inseriu; se os dados
forem inválidos, o SetError método será chamado. O primeiro argumento do
SetError método especifica qual controle exibir o ícone ao lado. O segundo
argumento é o texto do erro a ser exibido.
C#
C#
this.textBox1.Validating += new
System.ComponentModel.CancelEventHandler(this.textBox1_Validating);
Confira também
SetError
Visão geral do componente ErrorProvider
Como: Exibir erros dentro de um DataSet com o componente ErrorProvider do
Windows Forms
Como: Exibir erros dentro de um
DataSet com o componente
ErrorProvider do Windows Forms
Artigo • 02/06/2023
Você pode usar o componente Windows Forms ErrorProvider para exibir erros de coluna
em um conjunto de dados ou em outra fonte de dados. Para que um ErrorProvider
componente exiba erros de dados em um formulário, ele não precisa ser associado
diretamente a um controle. Depois de associado a uma fonte de dados, ele pode exibir
um ícone de erro ao lado de qualquer controle que esteja associado à mesma fonte de
dados.
7 Observação
C#
C#
errorProvider1.ContainerControl = this;
3. Defina a posição do registro atual para uma linha que contém um erro de coluna.
C#
DataTable1.Rows[5].SetColumnError("Name", "Bad data in this row.");
this.BindingContext [DataTable1].Position = 5;
Confira também
Visão geral do componente ErrorProvider
Como: Exibir ícones de erro para validação de formulário com o componente
ErrorProvider do Windows Forms
Classe FileDialog
Artigo • 02/06/2023
Nesta seção
Como: Recusar a atualização automática da caixa de diálogo do arquivo
Descreve como recusar uma atualização automática de estilo para uma caixa de diálogo
de arquivo.
Referência
OpenFileDialog
SaveFileDialog
Seções relacionadas
Componente OpenFileDialog
Componente SaveFileDialog
Como: Recusar a atualização automática
da caixa de diálogo do arquivo
Artigo • 02/06/2023
Confira também
FileDialog
Como: Adicionar um local personalizado
a uma caixa de diálogo Arquivo
Artigo • 02/06/2023
As caixas de diálogo padrão abrir e salvar no Windows Vista têm uma área no lado
esquerdo da caixa de diálogo intitulada Links Favoritos. Essa área é chamada de locais
personalizados. As OpenFileDialog classes e as SaveFileDialog classes permitem que
você adicione pastas à CustomPlaces coleção.
7 Observação
C#
openFileDialog1.CustomPlaces.Add("C:\\MyCustomPlace");
Confira também
FileDialog
FileDialogCustomPlacesCollection.Add
GUIDs de pasta conhecidas para locais personalizados da caixa de diálogo
GUIDs de pasta conhecidas para locais
personalizados da caixa de diálogo
Artigo • 02/06/2023
Você usa um Guid para especificar uma Pasta Conhecida do Windows ao adicionar
pastas a uma CustomPlaces coleção. GUIDs de pasta conhecidas não diferenciam
maiúsculas de minúsculas e são definidas no arquivo KnownFolders.h no SDK do
Windows.
7 Observação
Lista de GUIDs
A tabela a seguir lista pastas conhecidas do Windows e suas associadas Guid.
AddNewPrograms DE61D971-5EBC-4F02-A3A9-6C82895E5C04
AdminTools 724EF170-A42D-4FEF-9F26-B60E846FBA4F
AppDataLow A520A1A4-1780-4FF6-BD18-167343C5AF16
AppUpdates A305CE99-F527-492B-8B1A-7E76FA98D6E4
CDBurning 9E52AB10-F80D-49DF-ACB8-4330F5687855
ChangeRemovePrograms DF7266AC-9274-4867-8D55-3BD661DE872D
CommonAdminTools D0384E7D-BAC3-4797-8F14-CBA229B392B5
CommonOEMLinks C1BAE2D0-10DF-4334-BEDD-7AA20B227A9D
CommonPrograms 0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8
CommonStartMenu A4115719-D62E-491D-AA7C-E74B8BE3B067
CommonStartup 82A5EA35-D9CD-47C5-9629-E15D2F714E6E
CommonTemplates B94237E7-57AC-4347-9151-B08C6C32D1F7
Computador 0AC0837C-BBF8-452A-850D-79D08E667CA7
Conflito 4BFEFB45-347D-4006-A5BE-AC0CB0567192
Conexões 6F0CD92B-2E97-45D1-88FF-B0D186B8DEDD
Contatos 56784854-C6CB-462B-8169-88E350ACB882
ControlPanel 82A74AEB-AEB4-465C-A014-D097EE346D63
Cookies 2B0F765D-C0E9-4171-908E-08A611B84FF6
Desktop B4BFCC3A-DB2C-424C-B029-7FE99A87C641
Documentos FDD39AD0-238F-46AF-ADB4-6C85480369C7
Downloads 374DE290-123F-4565-9164-39C4925E467B
Favoritos 1777F761-68AD-4D8A-87BD-30B759FA33DDD
Fontes FD228CB7-AE11-4AE3-864C-16F3910AB8FE
Jogos CAC52C1A-B53D-4EDC-92D7-6B2E8AC19434
GameTasks 054FAE61-4DD8-4787-80B6-090220C4B700
Histórico D9DC8A3B-B784-432E-A781-5A1130A75963
Internet 4D9F7874-4E0C-4904-967B-40B0D20C3E4B
InternetCache 352481E8-33BE-4251-BA85-6007CAEDCF9D
Links BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968
LocalAppData F1B32785-6FBA-4FCF-9D55-7B8E7F157091
LocalizedResourcesDir 2A00375E-224C-49DE-B8D1-440DF7EF3DDC
Música 4BD8D571-6D19-48D3-BE97-422220080E43
NetHood C5ABBF53-E17F-4121-8900-86626FC2C973
Rede D20BEEC4-5CA8-4905-AE3B-BF251EA09B53
Objects3D 31C0DD25-9439-4F12-BF41-7FF4EDA38722
OriginalImages 2C36C0AA-5812-4B87-BFD0-4CD0DFB19B39
PhotoAlbums 69D2CF90-FC33-4FB7-9A0C-EBB0F0FCB43C
Imagens 33E28130-4E1E-4676-835A-98395C3BC3BB
Playlists DE92C1C7-837F-4F69-A3BB-86E631204A23
Impressoras 76FC4E2D-D6AD-4519-A663-37BD56068185
PrintHood 9274BD8D-CFD1-41C3-B35E-B13F55A758F4
Perfil 5E6C858F-0E22-4760-9AFE-EA3317B67173
ProgramData 62AB5D82-FDC1-4DC3-A9DD-070D1D495D97
ProgramFiles 905E63B6-C1BF-494E-B29C-65B732D3D21A
ProgramFilesCommon F7F1ED05-9F6D-47A2-AAAE-29D317C6F066
ProgramFilesCommonX64 6365D5A7-0F0D-45E5-87F6-0DA56B6A4F7D
ProgramFilesCommonX86 DE974D24-D9C6-4D3E-BF91-F4455120B917
ProgramFilesX64 6D809377-6AF0-444B-8957-A3773F02200E
ProgramFilesX86 7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E
Programas A77F5D77-2E2B-44C3-A6A2-ABA601054A51
Público DFDF76A2-C82A-4D63-906A-5644AC457385
PublicDesktop C4AA340D-F20F-4863-AFEF-F87EF2E6BA25
PublicDocuments ED4824AF-DCE4-45A8-81E2-FC7965083634
PublicDownloads 3D644C9B-1FB8-4F30-9B45-F670235F79C0
PublicGameTasks DEBF2536-E1A8-4C59-B6A2-414586476AEA
PublicMusic 3214FAB5-9757-4298-BB61-92A9DEAA44FF
PublicPictures B6EBFB86-6907-413C-9AF7-4FC2ABF07CC5
PublicVideos 2400183A-6185-49FB-A2D8-4A392A602BA3
QuickLaunch 52A4F021-7B75-48A9-9F6B-4B87A210BC8F
Recent AE50C081-EBD2-438A-8655-8A092E34987A
RecordedTV BD85E001-112E-431E-983B-7B15AC09FFF1
RecycleBin B7534046-3ECB-4C18-BE4E-64CD4CB7D6AC
ResourceDir 8AD10C31-2ADB-4296-A8F7-E4701232C972
RoamingAppData 3EB685DB-65F9-4CF6-A03A-E3EF65729F3D
SampleMusic B250C668-F57D-4EE1-A63C-290EE7D1AA1F
SamplePictures C4900540-2379-4C75-844B-64E6FAF8716B
SamplePlaylists 15CA69B3-30EE-49C1-ACE1-6B5EC372AFB5
SampleVideos 859EAD94-2E85-48AD-A71A-0969CB56A6CD
SavedGames 4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4
SavedSearches 7D1D3A04-DEBB-4115-95CF-2F29DA2920DA
SEARCH_CSC EE32E446-31CA-4ABA-814F-A5EBD2FD6D5E
SEARCH_MAPI 98EC0E18-2098-4D44-8644-66979315A281
SearchHome 190337D1-B8CA-4121-A639-6D472D16972A
SendTo 8983036C-27C0-404B-8F08-102D10DCFD74
SidebarDefaultParts 7B396E54-9EC5-4300-BE0A-2482EBAE1A26
SidebarParts A75D362E-50FC-4FB7-AC2C-A8BEAA314493
StartMenu 625B53C3-AB48-4EC1-BA1F-A1EF4146FC19
Inicialização B97D20BB-F46A-4C97-BA10-5E3608430854
SyncManager 43668BF8-C14E-49B2-97C9-747784D784B7
SyncResults 289A9A43-BE44-4057-A41B-587A76D7E7F9
SyncSetup 0F214138-B1D3-4A90-BBA9-27CBC0C5389A
Sistema 1AC14E77-02E7-4E5D-B744-2EB1AE5198B7
SystemX86 D65231B0-B2F1-4857-A4CE-A8E7C6EA7D27
Modelos A63293E8-664E-48DB-A079-DF759E0509F7
TreeProperties 5B3749AD-B49F-49C1-83EB-15370FBD4882
UserProfiles 0762D272-C50A-4BB0-A382-697DCD729B80
UsersFiles F3CE0F7C-4901-4ACC-8648-D5D44B04EF8F
Vídeos 18989B1D-99B5-455B-841C-AB7C74E4DDDFC
Windows F38BF404-1D43-42F2-9305-67DE0B28FC23
Confira também
FileDialogCustomPlace
Como: Adicionar um local personalizado a uma caixa de diálogo Arquivo
Arquivo KnownFolders.h no SDK do Windows
Controle FlowLayoutPanel (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do controle FlowLayoutPanel
Apresenta os conceitos gerais do controle, o FlowLayoutPanel que permite criar um
layout que flui horizontal ou verticalmente.
Consulte também Explicação passo a passo: organizando controles nos Windows Forms
utilizando um FlowLayoutPanel.
Referência
FlowLayoutPanel
Fornece documentação de referência para o FlowLayoutPanel controle.
Visão geral do controle
FlowLayoutPanel
Artigo • 02/06/2023
Consulte também Explicação passo a passo: organizando controles nos Windows Forms
utilizando um FlowLayoutPanel.
Confira também
FlowDirection
TableLayoutPanel
Controle FlowLayoutPanel
Como: Ancorar e encaixar controles
filho em um controle FlowLayoutPanel
Artigo • 02/06/2023
7 Observação
O segundo botão assume a mesma largura que o primeiro. Ele não se estende
pela largura do FlowLayoutPanel controle.
6. Defina a Dock propriedade do segundo botão como None . Isso faz com que o
botão assuma a largura original.
) Importante
O segundo botão assume a mesma largura que o primeiro. Ele não se estende
pela largura do FlowLayoutPanel controle. Essa é a regra geral para
ancoragem e encaixe no FlowLayoutPanel controle: para direções de fluxo
vertical, o FlowLayoutPanel controle calcula a largura de uma coluna implícita
do controle filho mais largo da coluna. Todos os outros controles nesta coluna
com Anchor ou Dock propriedades são alinhados ou estendidos para se
ajustar a esta coluna implícita. O comportamento funciona de maneira similar
a direções de fluxo horizontal. O FlowLayoutPanel controle calcula a altura de
uma linha implícita do controle filho mais alto da linha e todos os controles
filho encaixados ou ancorados nessa linha são alinhados ou dimensionados
para se ajustar à linha implícita.
Exemplo
A ilustração a seguir mostra quatro botões ancorados e encaixados em relação ao botão
azul em um FlowLayoutPanel. O FlowDirection é LeftToRight.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
VB
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Drawing
Imports System.Windows.Forms
<STAThread()> _
Shared Sub Main()
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub
End Class
Compilando o código
Este exemplo requer:
Confira também
FlowLayoutPanel
Visão geral do controle FlowLayoutPanel
Passo a passo: Organizando controles
nos Windows Forms utilizando um
FlowLayoutPanel
Artigo • 21/06/2023
Quando terminar, você terá uma compreensão da função desempenhada por esses
recursos de layout importantes.
Criar o projeto
1. No Visual Studio, crie um projeto de aplicativo baseado no Windows chamado
"FlowLayoutPanelExample" (Arquivo>Novo>Projeto>Visual C# ou Visual
Basic>Classic Desktop>Windows Forms Aplicativo).
2. Redimensione o FlowLayoutPanel para que sua altura seja menor que a coluna de
Button controles. Observe que o FlowLayoutPanel reorganiza os controles filho
para fluir para a próxima coluna. Continue a diminuir a altura e observe que os
controles filho fluem para colunas consecutivas. Altere o valor da propriedade
FlowLayoutPanel do controle FlowDirection para RightToLeft. Observe que as
posições dos controles filho são revertidas. Observe o layout quando você altera o
valor da FlowDirection propriedade para BottomUp.
2. Selecione o controle superior Button . Aumente sua largura para que ela tenha
cerca de duas vezes mais largura do que os outros Button controles.
4. Altere o valor de sua Anchor propriedade para Right e Left. Observe que ele é
dimensionado com a mesma largura que o primeiro Button controle.
5. Selecione o terceiro Button controle. Altere o valor de sua Dock propriedade para
Fill. Observe que ele é dimensionado com a mesma largura que o primeiro Button
controle.
Organizando controles usando preenchimento
e margens
Você também pode organizar controles em seu FlowLayoutPanel controle alterando as
Padding propriedades e Margin .
3. Mova o ponteiro do mouse para perto dos três Button controles. Observe que o
ponteiro muda para uma mira com o FlowLayoutPanel ícone de controle anexado.
6. Solte o botão do mouse. Observe que os três Button controles são inseridos no
FlowLayoutPanel controle .
Próximas etapas
Você pode obter um layout complexo usando uma combinação de controles e painéis
de layout. Sugestões para exploração adicional incluem:
Confira também
FlowLayoutPanel
TableLayoutPanel
Passo a passo: organizando controles nos Windows Forms usando um
TableLayoutPanel
Instruções passo a passo: organizando controles no Windows Forms usando guias
de alinhamento
Visão geral da propriedade AutoSize
Como encaixar controles no Windows Forms
Como ancorar controles no Windows Forms
Passo a passo: Definir o layout de controles do Windows Forms com
preenchimento, margens e a propriedade AutoSize
Componente FolderBrowserDialog
(Windows Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do componente FolderBrowserDialog (Windows Forms)
Explica o que é esse controle e seus principais recursos e propriedades.
Referência
FolderBrowserDialog
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Caixas de diálogo no Windows Forms
Fornece uma lista de tarefas para caixas de diálogo, que geralmente exibem guias.
7 Observação
Confira também
FolderBrowserDialog
Como: Escolher pastas com o componente FolderBrowserDialog do Windows
Forms
Componente FolderBrowserDialog
Como: Escolher pastas com o
componente FolderBrowserDialog do
Windows Forms
Artigo • 02/06/2023
Muitas vezes, dentro de aplicativos do Windows que você criou, será necessário solicitar
que os usuários selecionem uma pasta e com mais frequência que eles salvem um
conjunto de arquivos. O componente Windows Forms FolderBrowserDialog permite que
você realize essa tarefa facilmente.
2. Se você precisar definir a pasta mais alta que aparecerá na exibição de árvore da
caixa de diálogo, RootFolder de definir a propriedade , que recebe um membro da
Environment.SpecialFolder enumeração .
3. Além disso, você pode definir a propriedade Description , que especifica a cadeia
de caracteres de texto que aparece na parte superior do exibição de árvore do
navegador de pastas.
C#
) Importante
Para obter informações sobre como salvar arquivos, consulte Como salvar arquivos
usando o componente SaveFileDialog.
Confira também
FolderBrowserDialog
Visão geral do componente FolderBrowserDialog (Windows Forms)
Componente FolderBrowserDialog
Componente FontDialog (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do componente FontDialog
Apresenta os conceitos gerais do FontDialog componente, que você usa para exibir uma
caixa de diálogo pré-configurada. Os usuários podem usar a caixa de diálogo para
manipular fontes e suas configurações.
Referência
FontDialog
Fornece informações de referência sobre a FontDialog classe e seus membros.
Seções relacionadas
Controles e componentes da caixa de diálogo
Descreve um conjunto de controles e componentes que permitem que os usuários
executem interações padrão com o aplicativo ou sistema.
Por padrão, a caixa de diálogo mostra caixas de listagem de Fonte, Estilo da fonte e
Tamanho. Caixas de seleção para efeitos como Riscado e Sublinhado; uma lista suspensa
para Script e um exemplo de como a fonte aparecerá. (Script refere-se a scripts de
caracteres diferentes que estão disponíveis para uma determinada fonte, por exemplo,
hebraico ou japonês.) Para exibir a caixa de diálogo fonte, chame o ShowDialog método.
Propriedades da chave
O componente tem inúmeras propriedades que configuram sua aparência. As
propriedades que definem as seleções da caixa de diálogo são Font e Color. A Font
propriedade define a fonte, o estilo, o tamanho, o script e os efeitos; por exemplo,
Arial, 10pt, style=Italic, Strikeout .
Confira também
FontDialog
Componente FontDialog
Como: Mostrar uma lista de fontes ao
componente FontDialog
Artigo • 21/06/2023
O componente FontDialog permite aos usuários selecionar uma fonte, bem como
alterar seus aspectos de exibição, como peso e tamanho.
C#
C#
Nesta seção
Visão geral do controle GroupBox
Explica o que é esse controle e seus principais recursos e propriedades.
Referência
GroupBox
Descreve essa classe e tem links para todos os seus membros.
Panel
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle GroupBox
(Windows Forms)
Artigo • 02/06/2023
A legenda da caixa de grupo é definida pela Text propriedade. Para obter mais
informações, consulte Como definir o texto exibido por um controle dos Windows
Forms.
GroupBox e Painel
O GroupBox controle é semelhante ao Panel controle; no entanto, apenas o GroupBox
controle exibe uma legenda e somente o Panel controle pode ter barras de rolagem.
Confira também
Controle GroupBox
Como: Agrupar controles com o
controle GroupBox do Windows Forms
Artigo • 02/06/2023
Windows forms GroupBox são usados para agrupar outros controles. Há três razões
para agrupar controles:
Se você tiver controles existentes que deseja incluir em uma caixa de grupo,
poderá selecionar todos os controles, recortá-los para a Área de Transferência,
GroupBox selecionar o controle e, em seguida, colar-los na caixa de grupo. Você
também pode arrastá-los para a caixa de grupo.
Confira também
GroupBox
Controle GroupBox
Componente HelpProvider (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do componente HelpProvider
Apresenta os conceitos gerais do componente, que HelpProvider permite associar um
arquivo de Ajuda HTML a um aplicativo baseado no Windows.
Referência
HelpProvider
Descreve essa classe e tem links para todos os seus membros.
Help
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Se HelpNamespace não tiver sido definido, você deverá usar SetHelpString para
fornecer o texto da Ajuda. Se você tiver definido ambas as HelpNamespace cadeias de
caracteres de Ajuda, a Ajuda com base HelpNamespace terá precedência.
7 Observação
Você pode encontrar problemas ao usar o caminho relativo ao especificar o
caminho para o arquivo de Ajuda no ShowHelp método ou HelpNamespace na
propriedade do HelpProvider controle. Por isso, verifique se você usou o caminho
de arquivo absoluto para especificar o arquivo de Ajuda.
Confira também
Sistemas de Ajuda em aplicativos do Windows Forms
Controles HScrollBar e VScrollBar
(Windows Forms)
Artigo • 02/06/2023
Windows Forms controles de barra de rolagem são usados para fornecer navegação
fácil por meio de uma longa lista de itens ou uma grande quantidade de informações
rolando horizontal ou verticalmente dentro de um aplicativo ou controle. Barras de
rolagem são um elemento comum da interface do Windows.
Nesta seção
Visão geral dos controles HScrollBar e VScrollBar
Apresenta os conceitos gerais dos controles e VScrollBar dos HScrollBar controles, que
permitem que os usuários rolem horizontal e verticalmente por grandes quantidades de
informações.
Referência
HScrollBar
Descreve essa classe e tem links para todos os seus membros.
VScrollBar
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral dos controles HScrollBar e
VScrollBar (Windows Forms)
Artigo • 21/06/2023
ScrollBar Windows Forms controles são usados para fornecer navegação fácil por meio
de uma longa lista de itens ou uma grande quantidade de informações rolando
horizontal ou verticalmente dentro de um aplicativo ou controle. As barras de rolagem
são um elemento comum da interface do Windows, portanto, o ScrollBar controle
geralmente é usado com controles que não derivam da ScrollableControl classe . Da
mesma forma, muitos desenvolvedores optam por incorporar o ScrollBar controle ao
criar seus próprios controles de usuário.
Propriedade Value
A Value propriedade (que, por padrão, é 0) é um integer valor correspondente à
posição da caixa de rolagem na barra de rolagem. Quando a posição da caixa de
rolagem é o valor mínimo, ela se move para a posição mais à esquerda (para barras de
rolagem horizontais) ou a posição superior (para barras de rolagem verticais). Quando a
caixa de rolagem está no valor máximo, ela se move para a posição mais à direita ou
para a posição inferior. Da mesma forma, um valor entre a parte inferior e superior do
intervalo coloca a borda esquerda da caixa de rolagem no meio da barra de rolagem.
Além de usar cliques do mouse para alterar o valor da barra de rolagem, um usuário
também pode arrastar a caixa de rolagem para qualquer ponto ao longo da barra. O
valor resultante depende da posição da caixa de rolagem, mas está sempre dentro do
intervalo das Minimum propriedades to Maximum definidas pelo usuário.
Quando o usuário pressiona uma das teclas de direção ou clica em um dos botões da
barra de rolagem, a Value propriedade muda de acordo com o valor definido na
SmallChange propriedade .
Confira também
HScrollBar
VScrollBar
Controles a serem usados nos Windows Forms
Componente ImageList (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do componente ImageList
Explica o que é esse componente e seus principais recursos e propriedades
Referência
ImageList
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do componente ImageList
(Windows Forms)
Artigo • 02/06/2023
O componente Windows Forms ImageList é usado para armazenar imagens, que podem
ser exibidas por controles. Uma lista de imagens permite escrever código para um
catálogo de imagens único e consistente. Por exemplo, você pode girar imagens
exibidas por um Button controle simplesmente alterando a propriedade ou ImageKey o
ImageIndex botão. Você também pode associar a mesma lista de imagem a vários
controles. Por exemplo, se você estiver usando um ListView controle e um TreeView
controle para exibir a mesma lista de arquivos, alterar o ícone de um arquivo na lista de
imagens fará com que o novo ícone apareça em ambos os modos de exibição.
Propriedades da chave
A propriedade chave do ImageList componente é Images, que contém as imagens a
serem usadas pelo controle associado. Cada imagem individual pode ser acessada pelo
seu valor de índice ou por sua chave. A ColorDepth propriedade determina o número de
cores com as quais as imagens são renderizadas. Todas as imagens serão exibidas no
mesmo tamanho, definidas pela ImageSize propriedade. Imagens maiores terão a escala
ajustada para caber.
Confira também
ImageList
Como: Adicionar ou remover imagens com o componente ImageList do Windows
Forms
Como: Adicionar ou remover imagens
com o componente ImageList do
Windows Forms
Artigo • 02/06/2023
7 Observação
C#
VB
C#
,-ou-
C#
VB
C#
Confira também
Componente ImageList
Visão geral do componente ImageList
Imagens, bitmaps e metarquivos
Como: Adicionar ou remover imagens
ImageList com o Designer
Artigo • 02/06/2023
Confira também
Imagens, bitmaps e metarquivos
Passo a passo: executar tarefas comuns usando ações de designer
Componente ImageList
Controle Label (Windows Forms)
Artigo • 02/06/2023
) Importante
Label Windows Forms controles são usados para exibir texto ou imagens que não
podem ser editadas pelo usuário. Eles são usados para identificar objetos em um
formulário para fornecer uma descrição do que um determinado controle fará se
clicado, por exemplo, ou para exibir informações em resposta a um evento ou processo
em tempo de execução em seu aplicativo. Como o Label controle não pode receber o
foco, ele também pode ser usado para criar chaves de acesso para outros controles.
Nesta seção
Visão geral do controle de rótulo
Explica o que é esse controle e seus principais recursos e propriedades.
Referência
Label
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle de rótulo
(Windows Forms)
Artigo • 02/06/2023
Label Windows Forms controles são usados para exibir texto ou imagens que não
podem ser editadas pelo usuário. Eles são usados para identificar objetos em um
formulário — fornecendo uma descrição do que acontecerá se um determinado
controle for clicado, por exemplo ou exibindo informações em resposta a um evento em
tempo de execução ou processo em seu aplicativo. Por exemplo, você pode usar rótulos
para adicionar legendas descritivas em caixas de texto, caixas de listagem, caixas de
combinação e assim por diante. Também é possível escrever código para alterar o texto
exibido por um rótulo em resposta a eventos em tempo de execução. Por exemplo, se o
aplicativo leva alguns minutos para processar uma alteração, é possível exibir uma
mensagem de status de processamento em um rótulo.
Confira também
Label
Como: Dimensionar um controle de rótulo do Windows Forms para encaixar o
conteúdo
Como: Criar chaves de acesso com controles de rótulo do Windows Forms
Como: Criar chaves de acesso com
controles de rótulo do Windows Forms
Artigo • 02/06/2023
Label Windows Forms controles podem ser usados para definir chaves de acesso para
outros controles. Ao definir uma tecla de acesso em um controle de rótulo, o usuário
pode pressionar a tecla ALT mais o caractere designado para mover o foco para o
controle seguinte na ordem de tabulação. Como os rótulos não podem receber o foco,
este é movido automaticamente para o próximo controle na ordem de tabulação. Use
essa técnica para atribuir teclas de acesso a caixas de texto, caixas de combinação,
caixas de listagem e grades de dados.
-ou-
3. Use uma ampersand (&) na propriedade do Text rótulo para atribuir a chave de
acesso para o rótulo. Para obter mais informações, consulte Criando teclas de
acesso para controles dos Windows Forms.
7 Observação
label1.UseMnemonic = true;
label1.Text = "&Print";
label2.UseMnemonic = true;
label2.Text = "&Copy && Paste";
Confira também
Como: Dimensionar um controle de rótulo do Windows Forms para encaixar o
conteúdo
Visão geral do controle de rótulo
Controle de rótulo
Como: Dimensionar um controle de
rótulo do Windows Forms para encaixar
o conteúdo
Artigo • 02/06/2023
O controle Windows Forms Label pode ser de linha única ou de várias linhas e pode ser
corrigido em tamanho ou pode se redimensionar automaticamente para acomodar sua
legenda. A AutoSize propriedade ajuda você a dimensionar os controles para se ajustar
a legendas maiores ou menores, o que é particularmente útil se a legenda for alterada
em tempo de execução.
Confira também
Como: Criar chaves de acesso com controles de rótulo do Windows Forms
Visão geral do controle de rótulo
Controle de rótulo
Controle LinkLabel (Windows Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do controle LinkLabel
Explica o que é esse controle e seus principais recursos e propriedades.
Como: Exibir uma página da Web com um controle LinkLabel do Windows Forms (Visual
Basic)
Mostra como exibir uma página da Web no navegador padrão quando um usuário clica
em um controle Windows Forms LinkLabel .
Referência
Classe LinkLabel
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa de controles Windows Forms, com links para informações
sobre seu uso.
Visão geral do controle LinkLabel
(Windows Forms)
Artigo • 21/06/2023
O uso mais simples do LinkLabel controle é exibir um único link usando a LinkArea
propriedade , mas você também pode exibir vários hiperlinks usando a Links
propriedade . A Links propriedade permite que você acesse uma coleção de links. Você
também pode especificar dados na LinkData propriedade de cada objeto individual
LinkLabel.Link . O valor da LinkData propriedade pode ser usado para armazenar o local
de um arquivo a ser exibido ou o endereço de um site da Web.
Confira também
LinkLabel
Visão geral do controle de rótulo
Como: Vincular a um objeto ou página da Web com o controle LinkLabel do
Windows Forms
Como: Alterar a aparência do controle LinkLabel do Windows Forms
Como: Alterar a aparência do controle
LinkLabel do Windows Forms
Artigo • 21/06/2023
Você pode alterar o texto exibido pelo LinkLabel controle para atender a uma variedade
de finalidades. Por exemplo, é uma prática comum para indicar ao usuário que o texto é
clicável configurando o texto a ser exibido em uma cor específica com um sublinhado.
Depois que o usuário clica no texto, a cor é alterada para uma cor diferente. Para
controlar esse comportamento, você pode definir cinco propriedades diferentes: as
LinkBehaviorpropriedades , LinkArea, LinkColor, VisitedLinkColore LinkVisited .
Isso pode ser feito por meio de programação ou no tempo de design na janela
Propriedades.
C#
// You can set the color using decimal values for red, green, and blue
linkLabel1.LinkColor = Color.FromArgb(0, 0, 255);
// Or you can set the color using defined constants
linkLabel1.VisitedLinkColor = Color.Purple;
Isso pode ser feito por meio de programação ou no tempo de design na janela
Propriedades.
C#
C#
linkLabel1.LinkArea = new LinkArea(6,4);
Quando um link foi visitado, é uma prática comum alterar sua aparência de alguma
maneira, geralmente a cor. O texto será alterado para a cor especificada pela
VisitedLinkColor propriedade .
C#
Confira também
LinkArea
LinkColor
VisitedLinkColor
LinkVisited
Visão geral do controle LinkLabel
Como: Vincular a um objeto ou página da Web com o controle LinkLabel do
Windows Forms
Controle LinkLabel
Como: Vincular a um objeto ou página
da Web com o controle LinkLabel do
Windows Forms
Artigo • 21/06/2023
O controle Windows Forms LinkLabel permite que você crie links no estilo da Web em
seu formulário. Ao clicar no link, é possível alterar sua cor para indicar que o link foi
visitado. Para obter mais informações sobre como alterar a cor, consulte Como alterar a
aparência do controle LinkLabel do Windows Forms.
C#
// In this code example, the link area has been set to begin
// at the first character and extend for eight characters.
// You may need to modify this based on the text entered in Step 1.
linkLabel1.LinkArea = new LinkArea(0,8);
7 Observação
) Importante
C#
private void linkLabel1_LinkClicked(object sender,
System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
try
{
VisitLink();
}
catch (Exception ex )
{
MessageBox.Show("Unable to open link that was clicked.");
}
}
Confira também
Process.Start
Visão geral do controle LinkLabel
Como: Alterar a aparência do controle LinkLabel do Windows Forms
Controle LinkLabel
Como: Exibir uma página da Web com
um controle LinkLabel do Windows
Forms (Visual Basic)
Artigo • 02/06/2023
Este exemplo exibe uma página da Web no navegador padrão quando um usuário clica
em um controle de Windows FormsLinkLabel.
Exemplo
VB
Compilando o código
Este exemplo requer:
Confira também
LinkLabel
Controle LinkLabel
Controle ListBox (Windows Forms)
Artigo • 02/06/2023
Um controle Windows Forms ListBox exibe uma lista de itens dos quais o usuário pode
selecionar um ou mais.
Nesta seção
Visão geral do controle ListBox
Explica o que é esse controle e seus principais recursos e propriedades.
Referência
Classe ListBox
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles dos Windows Forms usados para listar opções
Fornece uma lista de coisas que você pode fazer com caixas de listagem, caixas de
combinação e caixas de listagem marcadas.
Visão geral do controle ListBox
(Windows Forms)
Artigo • 02/06/2023
Um controle Windows Forms ListBox exibe uma lista na qual o usuário pode selecionar
um ou mais itens. Se o número total de itens exceder o número que pode ser exibido,
uma barra de rolagem será adicionada automaticamente ao ListBox controle. Quando a
MultiColumn propriedade é definida como true , a caixa de listagem exibe itens em
várias colunas e uma barra de rolagem horizontal é exibida. Quando a MultiColumn
propriedade é definida como false , a caixa de listagem exibe itens em uma única
coluna e uma barra de rolagem vertical é exibida. Quando ScrollAlwaysVisible está
definida como true , a barra de rolagem é exibida independentemente do número de
itens. A SelectionMode propriedade determina quantos itens de lista podem ser
selecionados por vez.
Confira também
ListBox
Como: Adicionar e remover itens de um controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Como: Classificar o conteúdo de um controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Como: Associar um controle ComboBox ou ListBox do Windows Forms aos dados
Visão geral do controle ComboBox
Visão geral do controle CheckedListBox
Controles dos Windows Forms usados para listar opções
Como: Criar uma tabela de pesquisa para um controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Controle ListView (Windows Forms)
Artigo • 02/06/2023
O controle ListView do Windows Forms exibe uma lista de itens com ícones. É possível
usar uma exibição de lista para criar uma interface do usuário, como o painel direito do
Windows Explorer.
Nesta seção
Visão geral do controle ListView
Descreve esse controle e seus principais recursos e propriedades.
Passo a passo: Criar uma interface no estilo do Explorer com os controles ListView
e TreeView usando o Designer
Referência
Classe ListView
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Como: Adicionar informações personalizadas a um controle TreeView ou ListView
(Windows Forms)
Descreve como herdar de um item em uma exibição de lista ou um nó em um modo de
exibição de árvore para adicionar os campos, métodos ou construtores de que você
precisa.
Componente ImageList
Explica o que é uma lista de imagens e seus principais recursos e propriedades.
Como: Criar uma Interface do Usuário com Vários Painéis nos Windows Forms
Fornece instruções para dispor um Windows Form com vários painéis.
Confira também
Controles a serem usados nos Windows Forms
Visão geral do controle ListView
(Windows Forms)
Artigo • 02/06/2023
O controle ListView do Windows Forms exibe uma lista de itens com ícones. É possível
usar uma exibição de lista para criar uma interface do usuário, como o painel direito do
Windows Explorer. O controle tem quatro modos de exibição: LargeIcon, SmallIcon, Lista
e Detalhes.
7 Observação
O modo LargeIcon exibe ícones grandes ao lado do texto do item; os itens aparecerão
em várias colunas se o controle for grande o suficiente. O modo SmallIcon funciona da
mesma forma, mas exibe ícones pequenos. O modo de Lista exibe ícones pequenos,
mas sempre em uma única coluna. O modo de Detalhes exibe itens em várias colunas.
Para obter detalhes, consulte Como Adicionar Colunas ao Controle ListView dos
Windows Forms. O modo de exibição é determinado pela View propriedade. Todos os
modos de exibição podem exibir imagens de listas de imagens. Para obter detalhes,
consulte Como Exibir Ícones do Controle ListView dos Windows Forms.
A tabela a seguir lista alguns dos ListView membros e as exibições em que eles são
válidos.
A propriedade chave do ListView controle é Items, que contém os itens exibidos pelo
controle. A SelectedItems propriedade contém uma coleção dos itens atualmente
selecionados no controle. O usuário pode selecionar vários itens, por exemplo, para
arrastar e soltar vários itens de cada vez para outro controle, se a MultiSelect
propriedade estiver definida como true . O ListView controle pode exibir caixas de
seleção ao lado dos itens, se a CheckBoxes propriedade estiver definida como true .
A Activation propriedade determina que tipo de ação o usuário deve tomar para ativar
um item na lista: as opções são Standard, OneClicke TwoClick. OneClick A ativação
requer um único clique para ativar o item. TwoClick A ativação exige que o usuário
clique duas vezes para ativar o item; um único clique altera a cor do texto do item.
Standard A ativação exige que o usuário clique duas vezes para ativar um item, mas o
item não altera a aparência.
O ListView controle também dá suporte aos estilos visuais e outros recursos disponíveis
na plataforma Windows XP, incluindo agrupamento, exibição de bloco e marcas de
inserção.
Confira também
ListView
Controle ListView
Como: Adicionar e remover itens com o controle ListView do Windows Forms
Como: Adicionar colunas ao controle ListView do Windows Forms
Como: Exibir Ícones do Controle ListView do Windows Forms
Como: Exibir Subitens em Colunas com o Controle ListView do Windows Forms
Como: Selecionar um item no controle ListView do Windows Forms
Como: Agrupar itens em um controle ListView do Windows Forms
Como: Exibir uma marca de inserção em um controle ListView do Windows Forms
Como: Adicionar Recursos de Pesquisa a um Controle ListView
Como: Adicionar informações personalizadas a um controle TreeView ou ListView
(Windows Forms)
Como: Criar uma Interface do Usuário com Vários Painéis nos Windows Forms
Como: Adicionar e remover itens com o
controle ListView do Windows Forms
Artigo • 02/06/2023
C#
C#
Confira também
ListView
Controle ListView
Visão geral do controle ListView
Como: Adicionar e remover itens com o
controle ListView do Windows Forms
usando o Designer
Artigo • 02/06/2023
3. Para adicionar um item, clique no botão Adicionar. Em seguida, você pode definir
propriedades do novo item, como as propriedades e ImageIndex as Text
propriedades.
Confira também
Visão geral do controle ListView
Como: Adicionar colunas ao controle ListView do Windows Forms
Como: Exibir Subitens em Colunas com o Controle ListView do Windows Forms
Como: Exibir Ícones do Controle ListView do Windows Forms
Como: Adicionar informações personalizadas a um controle TreeView ou ListView
(Windows Forms)
Como: Agrupar itens em um controle ListView do Windows Forms
Como: Adicionar colunas ao controle
ListView do Windows Forms
Artigo • 02/06/2023
Na exibição Detalhes, o ListView controle pode exibir várias colunas para cada item de
lista. Você pode usar as colunas para exibir ao usuário vários tipos de informações sobre
cada item de lista. Por exemplo, uma lista de arquivos pode exibir o nome do arquivo,
tipo de arquivo, tamanho e data da última modificação do arquivo. Para obter
informações sobre como preencher as colunas depois que elas são criadas, consulte
Como exibir subitens em colunas com o controle ListView Windows Forms.
C#
Confira também
ListView
Controle ListView
Visão geral do controle ListView
Como: Adicionar colunas ao controle
ListView do Windows Forms usando o
Designer
Artigo • 02/06/2023
O controle Windows Forms ListView pode exibir várias colunas para cada item de lista
quando estiver na exibição Detalhes. Você pode usar as colunas para exibir vários tipos
de informações sobre cada item de lista. Por exemplo, uma lista de arquivos pode exibir
o nome do arquivo, tipo de arquivo, tamanho e data da última modificação do arquivo.
Para obter informações sobre como preencher as colunas depois que elas forem criadas,
consulte Como exibir subitens em colunas com o controle ListView dos Windows Forms.
3. Use o botão Adicionar para adicionar novas colunas. Em seguida, você pode
selecionar o cabeçalho da coluna e definir seu texto (a legenda da coluna), o
alinhamento do texto e a largura.
Confira também
Visão geral do controle ListView
Como: Adicionar e remover itens com o controle ListView do Windows Forms
Como: Exibir Subitens em Colunas com o Controle ListView do Windows Forms
Como: Exibir Ícones do Controle ListView do Windows Forms
Como: Adicionar informações personalizadas a um controle TreeView ou ListView
(Windows Forms)
Como: Adicionar Recursos de Pesquisa a
um Controle ListView
Artigo • 21/06/2023
Geralmente, ao trabalhar com uma grande lista de itens em um ListView controle, você
deseja oferecer recursos de pesquisa ao usuário. O ListView controle oferece essa
funcionalidade de duas maneiras diferentes: correspondência de texto e pesquisa de
localização.
O FindItemWithText método permite que você execute uma pesquisa de texto em uma
ListView exibição na lista ou detalhes, considerando uma cadeia de caracteres de
pesquisa e um índice inicial e final opcional. Por outro lado, o FindNearestItem método
permite que você encontre um item em um ListView ícone ou exibição de bloco,
considerando um conjunto de coordenadas x e y e uma direção a ser pesquisada.
C#
C#
// Set the view to large icon and add some items with the image
// in the image list.
iconListView.View = View.LargeIcon;
iconListView.Items.AddRange(new ListViewItem[]{
new ListViewItem("Amy Alberts", 0),
new ListViewItem("Amy Recker", 0),
new ListViewItem("Erin Hagens", 0),
new ListViewItem("Barry Johnson", 0),
new ListViewItem("Jay Hamlin", 0),
new ListViewItem("Brian Valentine", 0),
new ListViewItem("Brian Welker", 0),
new ListViewItem("Daniel Weisman", 0) });
this.Controls.Add(iconListView);
this.Controls.Add(previousItemBox);
Confira também
ListView
FindItemWithText
FindNearestItem
Controle ListView
Visão geral do controle ListView
Como: Adicionar e remover itens com o controle ListView do Windows Forms
Como: Exibir Ícones do Controle
ListView do Windows Forms
Artigo • 02/06/2023
O controle Windows Forms ListView pode exibir ícones de três listas de imagens. As
exibições Lista, Detalhes e SmallIcon exibem imagens da lista de imagens especificada
na SmallImageList propriedade. A exibição LargeIcon exibe imagens da lista de imagens
especificada na LargeImageList propriedade. Uma exibição de lista também pode exibir
um conjunto adicional de ícones, definido na StateImageList propriedade, ao lado dos
ícones grandes ou pequenos. Para obter mais informações sobre listas de imagens,
consulte Componente ImageList e Como adicionar ou remover imagens com o
componente ImageList dos Windows Forms.
C#
listView1.SmallImageList = imageList1;
C#
Confira também
Visão geral do controle ListView
Como: Adicionar e remover itens com o controle ListView do Windows Forms
Como: Adicionar colunas ao controle ListView do Windows Forms
Como: Adicionar informações personalizadas a um controle TreeView ou ListView
(Windows Forms)
Componente ImageList
Como: Exibir Subitens em Colunas com
o Controle ListView do Windows Forms
Artigo • 02/06/2023
O controle Windows Forms ListView pode exibir texto adicional, ou subitens, para cada
item na exibição Detalhes. A primeira coluna exibe o texto do item, por exemplo, o
número de um funcionário. A segunda, terceira e colunas seguintes exibem o primeiro,
segundo e subitens associados seguintes.
C#
Confira também
Visão geral do controle ListView
Como: Adicionar e remover itens com o controle ListView do Windows Forms
Como: Adicionar colunas ao controle ListView do Windows Forms
Como: Exibir Ícones do Controle ListView do Windows Forms
Como: Adicionar informações personalizadas a um controle TreeView ou ListView
(Windows Forms)
Como: Habilitar a exibição de bloco em
um controle ListView do Windows
Forms
Artigo • 02/06/2023
O modo de exibição lado a lado usa um ícone de 32 x 32 pixels e várias linhas de texto,
conforme mostrado nas imagens a seguir.
Para habilitar o modo de exibição de bloco, defina a View propriedade como Tile. Você
pode ajustar o tamanho dos blocos definindo a TileSize propriedade e o número de
linhas de texto exibidas no bloco ajustando a Columns coleção.
C#
listView1.View = View.Tile;
Exemplo
O exemplo de código completo a seguir demonstra a exibição lado a lado com blocos
modificados para mostrar as três linhas de texto. O tamanho de bloco foi ajustado para
evitar encapsulamento de linha.
C#
using System;
using System.Drawing;
using System.Windows.Forms;
public ListViewTilingExample()
{
// Initialize myListView.
ListView myListView = new ListView();
myListView.Dock = DockStyle.Fill;
myListView.View = View.Tile;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new ListViewTilingExample());
}
}
Compilando o código
Este exemplo requer:
Confira também
ListView
TileSize
Controle ListView
Visão geral do controle ListView
Como: Habilitar exibição lado a lado em
um controle ListView do Windows
Forms usando o designer
Artigo • 02/06/2023
Confira também
TileSize
Visão geral do controle ListView
Como: Agrupar itens em um controle
ListView do Windows Forms
Artigo • 02/06/2023
C#
C#
C#
Confira também
ListView
ListView.Groups
ListViewGroup
Controle ListView
Visão geral do controle ListView
Como: Adicionar e remover itens com o controle ListView do Windows Forms
Como: Agrupar itens em um controle
ListView do Windows Forms usando o
Designer
Artigo • 02/06/2023
2. Para adicionar um novo item, clique no botão Adicionar. Em seguida, você pode
definir propriedades do novo item, como as propriedades e ImageIndex as Text
propriedades.
Confira também
ListView
Groups
ListViewGroup
Controle ListView
Visão geral do controle ListView
Como: Adicionar e remover itens com o controle ListView do Windows Forms
Como: Exibir uma marca de inserção em
um controle ListView do Windows
Forms
Artigo • 02/06/2023
A marca de inserção no controle mostra aos ListView usuários o ponto em que os itens
arrastados serão inseridos. Quando um usuário arrasta um item para um ponto entre
dois outros itens, a marca de inserção mostra o novo local esperado do item.
Exemplo
C#
using System;
using System.Drawing;
using System.Windows.Forms;
public ListViewInsertionMarkExample()
{
// Initialize myListView.
myListView = new ListView();
myListView.Dock = DockStyle.Fill;
myListView.View = View.LargeIcon;
myListView.MultiSelect = false;
myListView.ListViewItemSorter = new ListViewIndexComparer();
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new ListViewInsertionMarkExample());
}
// Confirm that the mouse pointer is not over the dragged item.
if (targetIndex > -1)
{
// Determine whether the mouse pointer is to the left or
// the right of the midpoint of the closest item and set
// the InsertionMark.AppearsAfterItem property accordingly.
Rectangle itemBounds = myListView.GetItemRect(targetIndex);
if ( targetPoint.X > itemBounds.Left + (itemBounds.Width / 2) )
{
myListView.InsertionMark.AppearsAfterItem = true;
}
else
{
myListView.InsertionMark.AppearsAfterItem = false;
}
}
// Removes the insertion mark when the mouse leaves the control.
private void myListView_DragLeave(object sender, EventArgs e)
{
myListView.InsertionMark.Index = -1;
}
Compilando o código
Este exemplo requer:
Confira também
ListView
ListView.InsertionMark
ListViewInsertionMark
Controle ListView
Visão geral do controle ListView
Passo a passo: executar uma operação do tipo "arrastar e soltar" no Windows
Forms
Como: Selecionar um item no controle
ListView do Windows Forms
Artigo • 02/06/2023
Exemplo
C#
this.listView1.Items[0].Focused = true;
this.listView1.Items[0].Selected = true;
Compilando o código
Este exemplo requer:
Confira também
ListView
ListViewItem.Selected
Passo a passo: Criar uma interface no
estilo do Explorer com os controles
ListView e TreeView usando o Designer
Artigo • 21/06/2023
C#
9. Uma vez que o código anterior usa o namespace System.IO, adicione as instruções
using ou import adequadas na parte superior do formulário.
C#
using System.IO;
C#
public Form1()
{
InitializeComponent();
PopulateTreeView();
}
C#
item.SubItems.AddRange(subItems);
listView1.Items.Add(item);
}
listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
}
C#
this.treeView1.NodeMouseClick +=
new TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick);
Testando o aplicativo
Agora, é possível testar o formulário para garantir que ele se comporta da forma
esperada.
Próximas etapas
Este aplicativo fornece um exemplo de como você pode usar TreeView e ListView
controlar juntos. Para obter mais informações sobre esses controles, consulte os
seguintes tópicos:
Como: Adicionar informações personalizadas a um controle TreeView ou ListView
(Windows Forms)
Confira também
ListView
TreeView
Controle ListView
Como: Adicionar e remover nós com o controle TreeView do Windows Forms
Como: Adicionar e remover itens com o controle ListView do Windows Forms
Como: Adicionar colunas ao controle ListView do Windows Forms
Componente MainMenu (Windows
Forms)
Artigo • 02/06/2023
7 Observação
Nesta seção
Visão geral do componente MainMenu
Explica o que é esse componente e seus principais recursos e propriedades.
Referência
MainMenu
Descreve essa classe e tem links para todos os seus membros.
Confira também
MenuStrip
ContextMenuStrip
Visão geral do componente MainMenu
(Windows Forms)
Artigo • 02/06/2023
) Importante
Propriedades da chave
Um item de menu pode ser designado como o item padrão definindo a DefaultItem
propriedade como true . O item padrão aparece em negrito quando o menu é clicado.
A propriedade do item de Checked menu é true ou, false e indica se o item de menu
está selecionado. A propriedade do item de RadioCheck menu personaliza a aparência
do item selecionado: se RadioCheck estiver definido como true , um botão de opção
será exibido ao lado do item; se RadioCheck estiver definido como false , uma marca
de seleção será exibida ao lado do item.
Confira também
MainMenu
Menu
MenuItem
MenuStrip
ContextMenuStrip
Visão geral do controle MenuStrip
Controle MaskedTextBox (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Passo a passo: Trabalhando com o controle MaskedTextBox
Demonstra os principais recursos do MaskedTextBox controle.
Referência
MaskedTextBox
A classe primária para a implementação do controle de caixa de texto mascarada.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Passo a passo: Trabalhando com o
controle MaskedTextBox
Artigo • 21/06/2023
Para obter um resumo dos caracteres aos quais a propriedade Mask dá suporte,
consulte a seção Comentários da Mask propriedade .
C#
C#
C#
public void maskedTextBox1_TypeValidationCompleted(object sender,
TypeValidationEventArgs e)
{
if (!e.IsValidInput)
{
toolTip1.ToolTipTitle = "Invalid Date Value";
toolTip1.Show("We're sorry, but the value you entered is not a
valid date. Please change the value.", maskedTextBox1, 5000);
e.Cancel = true;
}
}
Confira também
MaskedTextBox
Controle MaskedTextBox
Como: Associar dados ao controle
MaskedTextBox
Artigo • 21/06/2023
Você pode associar dados a um MaskedTextBox controle da mesma forma que pode a
qualquer outro controle Windows Forms. No entanto, se o formato dos seus dados no
banco de dados não corresponder ao formato esperado pela sua definição de máscara,
será necessário reformatar os dados. O procedimento a seguir demonstra como fazer
isso usando os Format eventos e Parse da Binding classe para exibir campos separados
de número de telefone e banco de dados de extensão de telefone como um único
campo editável.
O procedimento a seguir requer que você tenha acesso a um banco de dados do SQL
Server com o banco de dados Northwind de exemplo instalado.
C#
using System.Data.SqlClient;
C#
C#
DataRowView currentRow =
(DataRowView)BindingContext[employeesTable, "Employees"].Current;
if (currentRow["Extension"] == null)
{
ext = "";
} else
{
ext = currentRow["Extension"].ToString();
}
//Get the current binding object, and set the new extension
manually.
DataRowView currentRow =
(DataRowView)BindingContext[employeesTable, "Employees"].Current;
// Remove the "x" from the extension.
currentRow["Extension"] = ext.Substring(1);
C#
9. Execute o exemplo. Edite os dados e use os botões Anterior e Próximo para ver se
os dados são persistidos corretamente no DataSet.
Exemplo
O exemplo de código a seguir é a lista de código completa resultante da conclusão do
procedimento anterior.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using System.Data.SqlClient;
#endregion
namespace MaskedTextBoxDataCSharp
{
partial class Form1 : Form
{
Binding currentBinding, phoneBinding;
DataSet employeesTable = new DataSet();
SqlConnection sc;
SqlDataAdapter dataConnect;
public Form1()
{
InitializeComponent();
}
DataRowView currentRow =
(DataRowView)BindingContext[employeesTable, "Employees"].Current;
if (currentRow["Extension"] == null)
{
ext = "";
} else
{
ext = currentRow["Extension"].ToString();
}
//Get the current binding object, and set the new extension
manually.
DataRowView currentRow =
(DataRowView)BindingContext[employeesTable, "Employees"].Current;
// Remove the "x" from the extension.
currentRow["Extension"] = ext.Substring(1);
Compilando o código
Crie um projeto do Visual C# ou do Visual Basic.
Adicione os TextBox controles e MaskedTextBox ao formulário, conforme descrito
no procedimento anterior.
Compile o aplicativo.
Confira também
Passo a passo: Trabalhando com o controle MaskedTextBox
Como: Definir a máscara de entrada
Artigo • 02/06/2023
- ou -
a. Na janela Propriedades , selecione a Mask propriedade.
3. (Opcional) Digite uma nova máscara na caixa Máscara. Ou seja, não é necessário
usar uma das máscaras predefinidas.
7 Observação
5. Clique em OK.
Confira também
Passo a passo: Trabalhando com o controle MaskedTextBox
Controle MenuStrip (Windows Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do controle MenuStrip
Explica o que é o controle e seus principais recursos e propriedades.
Referência
MenuStrip
Descreve os recursos da MenuStrip classe, que fornece um sistema de menus para um
formulário.
ContextMenuStrip
Descreve os recursos da ContextMenuStrip, que representa um menu de atalho.
ToolStripMenuItem
Descreve os recursos da ToolStripMenuItem classe, que representa uma opção
selecionável exibida em um MenuStrip ou ContextMenuStrip.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle MenuStrip
(Windows Forms)
Artigo • 02/06/2023
Propriedade Descrição
ToolStripItem.MergeAction Obtém ou define como os menus filho são mescladas com os menus
pai em aplicativos MDI.
Classe Descrição
Confira também
ToolStrip
MenuStrip
ContextMenuStrip
StatusStrip
ToolStripItem
ToolStripDropDown
Como: Adicionar melhorias a
ToolStripMenuItems
Artigo • 02/06/2023
Exiba teclas de atalho para oferecer uma alternativa de teclado ao mouse para
executar comandos. Por exemplo, pressionar CTRL+C executa o comando Copiar.
Exiba chaves de acesso para oferecer uma alternativa de teclado ao mouse para
navegação de menu. Por exemplo, pressionar ALT+F escolhe o menu Arquivo.
Isso também define a CheckState propriedade como true . Use este procedimento
somente se desejar que o comando de menu apareça como marcado por padrão,
independentemente de estar selecionado.
7 Observação
Para navegar até este comando de menu, pressione ALT para dar foco à
MenuStriptecla de acesso e pressione a tecla de acesso do nome do menu.
Quando o menu é aberto e mostra os itens com chaves de acesso, basta
pressionar a tecla de acesso para selecionar o comando de menu.
7 Observação
Evite definir teclas de acesso duplicadas, como definir ALT+F duas vezes no mesmo
sistema de menu. Não é possível garantir a ordem de seleção das teclas de acesso
duplicadas.
C#
// This code adds the New and Open menu commands, a separator bar,
// and the Save and Exit menu commands to the top-level File menu,
// in that order.
this.fileToolStripMenuItem.DropDownItems.AddRange(new _
ToolStripItem[] {
this.newToolStripMenuItem,
this.openToolStripMenuItem,
this.toolStripSeparator1,
this.saveToolStripMenuItem,
this.exitToolStripMenuItem});
Confira também
MenuStrip
ToolStripMenuItem
Visão geral do controle MenuStrip
Como acrescentar um MenuStrip a uma
janela pai MDI (Windows Forms)
Artigo • 21/06/2023
Em alguns aplicativos, o tipo de uma janela filho MDI (interface de vários documentos)
pode ser diferente da janela MDI pai. Por exemplo, a MDI pai pode ser uma planilha e a
MDI filho pode ser um gráfico. Nesse caso, é recomendável atualizar o conteúdo do
menu do MDI pai com o conteúdo do menu do MDI filho, visto que janelas MDI filho de
tipos diferentes são ativadas.
4. Adicione um item de menu de nível superior ao Form1 MenuStrip e defina sua Text
propriedade &File como .
7. Adicione um item de menu de nível superior ao Form2 MenuStrip e defina sua Text
propriedade &Special como .
8. Adicione dois itens de submenu ao &Special item de menu e defina suas Text
propriedades como Command&1 e Command&2 , respectivamente.
9. Defina a MergeAction propriedade dos itens de &Special menu , Command&1 e
Command&2 como Append.
C#
C#
this.openToolStripMenuItem.Click += new
System.EventHandler(this.openToolStripMenuItem_Click);
Compilando o código
Este exemplo requer:
Em tempo de design, você pode copiar menus de nível superior inteiros e seus itens de
submenu para um lugar diferente no MenuStrip. Você também pode copiar itens de
menu individuais entre menus de nível superior ou alterar a posição dos itens de menu
dentro de um menu.
O menu que você copiou é inserido antes do menu de nível superior selecionado.
2. Clique com o botão esquerdo do mouse no menu que contém o item de submenu
que você recortou.
Confira também
MenuStrip
ToolStripMenuItem
Visão geral do controle MenuStrip
Como criar uma lista de janelas MDI
com MenuStrip (Windows Forms)
Artigo • 21/06/2023
Use a interface MDI para criar aplicativos que podem abrir vários documentos no
mesmo momento e copie e cole o conteúdo de um documento para outro.
Este procedimento mostra como criar uma lista de todos os formulários filho ativos no
menu Janela do pai.
3. Adicione dois itens de menu de nível superior ao MenuStrip e defina suas Text
propriedades como &File e &Window .
C#
C#
this.newToolStripMenuItem.Click += new
System.EventHandler(this.newToolStripMenuItem_Click);
Compilando o código
Este exemplo requer:
Confira também
Como: criar formulários pai MDI
Como: criar formulários filho MDI
Controle MenuStrip
Como: Desabilitar ToolStripMenuItems
Artigo • 02/06/2023
Você pode limitar ou ampliar os comandos que um usuário pode fazer ao habilitar e
desabilitar itens de menu em resposta a atividades do usuário. Os itens de menu são
habilitados por padrão quando são criados, mas isso pode ser ajustado por meio da
Enabled propriedade. Você pode manipular essa propriedade em tempo de design na
janela Propriedades ou programaticamente configurando ela no código.
C#
menuItem1.Enabled = false;
Dica
Confira também
MenuStrip
ToolStripMenuItem
Como: Ocultar ToolStripMenuItems
Visão geral do controle MenuStrip
Como: Desabilitar ToolStripMenuItems
usando o designer
Artigo • 02/06/2023
Você pode limitar ou ampliar os comandos que um usuário pode fazer ao habilitar e
desabilitar itens de menu em resposta a atividades do usuário. Os itens de menu são
habilitados por padrão quando são criados, mas isso pode ser ajustado por meio da
Enabled propriedade. Você pode manipular essa propriedade em tempo de design na
janela Propriedades ou programaticamente configurando ela no código. Para obter
mais informações, consulte Como desabilitar ToolStripMenuItems.
Dica
Confira também
MenuStrip
ToolStripMenuItem
Como: Ocultar ToolStripMenuItems
Visão geral do controle MenuStrip
Como exibir botões de opção em um
MenuStrip (Windows Forms)
Artigo • 21/06/2023
Botões de opção são semelhantes a caixas de seleção, exceto que os usuários podem
selecionar apenas um por vez. Embora, por padrão, a ToolStripMenuItem classe não
forneça comportamento de botão de opção, a classe fornece marcar comportamento de
caixa que você pode personalizar para implementar o comportamento do botão de
opção para itens de menu em um MenuStrip controle.
C#
C#
protected override void OnCheckedChanged(EventArgs e)
{
base.OnCheckedChanged(e);
3. Substitua o OnClick método para garantir que clicar em um item que já foi
selecionado não limpará a seleção.
C#
base.OnClick(e);
}
C#
// Let the item paint itself, and then paint the RadioButton
// where the check mark is normally displayed.
protected override void OnPaint(PaintEventArgs e)
{
if (Image != null)
{
// If the client sets the Image property, the selection
behavior
// remains unchanged, but the RadioButton is not displayed and
the
// selection is indicated only by the selection rectangle.
base.OnPaint(e);
return;
}
else
{
// If the Image property is not set, call the base OnPaint
method
// with the CheckState property temporarily cleared to prevent
// the check mark from being painted.
CheckState currentState = this.CheckState;
this.CheckState = CheckState.Unchecked;
base.OnPaint(e);
this.CheckState = currentState;
}
C#
base.OnMouseEnter(e);
}
base.OnMouseDown(e);
}
C#
// Enable the item only if its parent item is in the checked state
// and its Enabled property has not been explicitly set to false.
public override bool Enabled
{
get
{
ToolStripMenuItem ownerMenuItem =
OwnerItem as ToolStripMenuItem;
C#
C#
Exemplo
O exemplo de código a seguir fornece a classe completa ToolStripRadioButtonMenuItem
e uma classe e Program classe Form para demonstrar o comportamento do botão de
opção.
C#
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;
base.OnClick(e);
}
// Let the item paint itself, and then paint the RadioButton
// where the check mark is normally displayed.
protected override void OnPaint(PaintEventArgs e)
{
if (Image != null)
{
// If the client sets the Image property, the selection behavior
// remains unchanged, but the RadioButton is not displayed and
the
// selection is indicated only by the selection rectangle.
base.OnPaint(e);
return;
}
else
{
// If the Image property is not set, call the base OnPaint
method
// with the CheckState property temporarily cleared to prevent
// the check mark from being painted.
CheckState currentState = this.CheckState;
this.CheckState = CheckState.Unchecked;
base.OnPaint(e);
this.CheckState = currentState;
}
base.OnMouseEnter(e);
}
// Enable the item only if its parent item is in the checked state
// and its Enabled property has not been explicitly set to false.
public override bool Enabled
{
get
{
ToolStripMenuItem ownerMenuItem =
OwnerItem as ToolStripMenuItem;
public Form1()
{
mainToolStripMenuItem.Text = "main";
toolStripRadioButtonMenuItem1.Text = "option 1";
toolStripRadioButtonMenuItem2.Text = "option 2";
toolStripRadioButtonMenuItem3.Text = "option 2-1";
toolStripRadioButtonMenuItem4.Text = "option 2-2";
toolStripRadioButtonMenuItem5.Text = "option 3-1";
toolStripRadioButtonMenuItem6.Text = "option 3-2";
toolStripMenuItem1.Text = "toggle";
toolStripMenuItem1.CheckOnClick = true;
mainToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] {
toolStripRadioButtonMenuItem1, toolStripRadioButtonMenuItem2,
toolStripMenuItem1});
toolStripRadioButtonMenuItem2.DropDownItems.AddRange(
new ToolStripItem[] {toolStripRadioButtonMenuItem3,
toolStripRadioButtonMenuItem4});
toolStripMenuItem1.DropDownItems.AddRange(new ToolStripItem[] {
toolStripRadioButtonMenuItem5, toolStripRadioButtonMenuItem6});
menuStrip1.Items.AddRange(new ToolStripItem[]
{mainToolStripMenuItem});
Controls.Add(menuStrip1);
MainMenuStrip = menuStrip1;
Text = "ToolStripRadioButtonMenuItem demo";
}
}
Compilando o código
Este exemplo requer:
Confira também
MenuStrip
ToolStripMenuItem
ToolStripMenuItem.CheckOnClick
ToolStripMenuItem.Checked
ToolStripMenuItem.OnCheckedChanged
ToolStripMenuItem.OnPaint
ToolStripMenuItem.Enabled
RadioButtonRenderer
Controle MenuStrip
Como: Implementar um ToolStripRenderer personalizado
Como: Ocultar ToolStripMenuItems
Artigo • 02/06/2023
C#
menuItem3.Visible = false;
Confira também
Visible
MenuStrip
Visão geral do controle MenuStrip
Como: Desabilitar ToolStripMenuItems
Como: Ocultar ToolStripMenuItems
usando o designer
Artigo • 02/06/2023
Ocultar itens de menu é uma maneira de controlar a interface do usuário (IU) do seu
aplicativo e restringir comandos do usuário. Geralmente, é recomendável ocultar um
menu inteiro quando todos os itens de menu estão indisponíveis. Isso apresenta menos
distrações para o usuário. Além disso, pode ser útil ocultar e desabilitar o menu ou item
de menu, visto que apenas ocultar não impede que o usuário acesse um comando de
menu usando uma tecla de atalho. Para obter mais informações sobre como desabilitar
itens de menu, consulte Como desabilitar ToolStripMenuItems usando o Designer.
Quando você oculta o item de menu de nível superior, todos os itens de menu
dentro desse menu também são ocultos. Se você clicar em outro lugar que não
seja na configuração Visible após, MenuStrip false todo o item de menu de nível
superior e seus itens de submenu desaparecerão do formulário, mostrando assim
o efeito de tempo de execução de sua ação. Para exibir o item de menu de nível
superior oculto no momento do design, clique na Bandeja de
MenuStripComponentes, na Estrutura de Tópicos do Documento ou na parte
superior da grade de propriedades.
7 Observação
Você raramente ocultará um menu inteiro, exceto por menus filho MDI (interface
de vários documentos) em um cenário de mesclagem.
Confira também
Visible
MenuStrip
Enabled
Available
Overflow
Visão geral do controle MenuStrip
Como: Desabilitar ToolStripMenuItems usando o designer
Como inserir um MenuStrip um menu
suspenso MDI (Windows Forms)
Artigo • 21/06/2023
Em alguns aplicativos, o tipo de uma janela filho MDI (interface de vários documentos)
pode ser diferente da janela MDI pai. Por exemplo, a MDI pai pode ser uma planilha e a
MDI filho pode ser um gráfico. Nesse caso, é recomendável atualizar o conteúdo do
menu do MDI pai com o conteúdo do menu do MDI filho, visto que janelas MDI filho de
tipos diferentes são ativadas.
3. Adicione um item de menu de nível superior ao Form1 MenuStrip e defina sua Text
propriedade como &File .
4. Adicione três itens de submenu ao item de &File menu e defina suas Text
propriedades como &Open , &Import from e E&xit .
5. Adicione dois itens de submenu ao &Import from item submenu e defina suas Text
propriedades como &Word e &Excel .
7. Adicione um item de menu de nível superior ao Form2 MenuStrip e defina sua Text
propriedade como &File .
Arquivo MatchOnly -1
Separador Inserir 2
Salvar Inserir 3
Separador Inserir 5
C#
C#
this.openToolStripMenuItem.Click += new
System.EventHandler(this.openToolStripMenuItem_Click);
Compilando o código
Este exemplo requer:
Confira também
Como: criar formulários pai MDI
Como: criar formulários filho MDI
Visão geral do controle MenuStrip
Como remover um ToolStripMenuItem
de um menu suspenso MDI (Windows
Forms)
Artigo • 21/06/2023
Em alguns aplicativos, o tipo de uma janela filho MDI (interface de vários documentos)
pode ser diferente da janela MDI pai. Por exemplo, a MDI pai pode ser uma planilha e a
MDI filho pode ser um gráfico. Nesse caso, é recomendável atualizar o conteúdo do
menu do MDI pai com o conteúdo do menu do MDI filho, visto que janelas MDI filho de
tipos diferentes são ativadas.
3. Adicione um item de menu de nível superior ao Form1 MenuStrip e defina sua Text
propriedade como &File .
4. Adicione três itens de submenu ao item de &File menu e defina suas Text
propriedades como &Open , &Import from e E&xit .
5. Adicione dois itens de submenu ao &Import from item submenu e defina suas Text
propriedades como &Word e &Excel .
7. Adicione um item de menu de nível superior ao Form2 MenuStrip e defina sua Text
propriedade como &File .
Arquivo MatchOnly -1
Importar do MatchOnly -1
Word Remover -1
C#
C#
this.openToolStripMenuItem.Click += new _
System.EventHandler(this.openToolStripMenuItem_Click);
Compilando o código
Este exemplo requer:
Confira também
Como: criar formulários pai MDI
Como: criar formulários filho MDI
Visão geral do controle MenuStrip
Como: Mover ToolStripMenuItems
Artigo • 02/06/2023
Em tempo de design, você pode mover menus de nível superior inteiros e seus itens de
menu para um lugar diferente no MenuStrip. Você também pode mover itens de menu
individuais entre menus de nível superior ou alterar a posição dos itens de menu dentro
de um menu.
2. Arraste o ponto de inserção para o menu de nível superior que está antes do novo
local desejado e solte o botão esquerdo do mouse.
4. Clique nas teclas de direção para cima e para baixo para mover o item de menu no
menu.
5. Clique em OK.
3. Arraste o item de menu para o novo local e solte o botão esquerdo do mouse.
2. Clique com o botão esquerdo do mouse no menu que contém o item de menu
que você recortou.
3. Clique com o botão esquerdo do mouse no item de menu anterior ao novo local
desejado e pressione CTRL + V, ou clique com o botão direito do mouse no item
de menu anterior ao novo local desejado e selecione Colar no menu de atalho.
O item de menu que você recortou é inserido após o item de menu selecionado.
Confira também
MenuStrip
ToolStripMenuItem
Visão geral do controle MenuStrip
Como: Configurar margens de imagem
e margens de verificação MenuStrip
Artigo • 02/06/2023
Exemplo
O exemplo de código a seguir demonstra como definir e personalizar as margens de
verificação e as ContextMenuStrip margens de imagem. O procedimento é o mesmo
para um ContextMenuStrip ou um MenuStrip.
C#
return sampleBitmap;
}
return checkImageContextMenuStrip;
}
}
Compilando o código
Este exemplo requer:
Confira também
MenuStrip
ContextMenuStrip
ToolStripDropDown
Controle ToolStrip
Como: Habilitar margens de verificação e de imagem em controles
ContextMenuStrip
Como: Fornecer itens de menu padrão
para um formulário
Artigo • 02/06/2023
Você pode fornecer um menu padrão para seus formulários com o MenuStrip controle.
Confira também passo a passo: fornecendo itens de menu padrão para um formulário.
Exemplo
O exemplo de código a seguir demonstra como usar um MenuStrip controle para criar
um formulário com um menu padrão. As seleções de item de menu são exibidas em um
StatusStrip controle.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace StandardMenuFormCS
{
public class Form1 : Form
{
private StatusStrip statusStrip1;
private ToolStripStatusLabel toolStripStatusLabel1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
public Form1()
{
InitializeComponent();
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new
System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.newToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.openToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator = new
System.Windows.Forms.ToolStripSeparator();
this.saveToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.saveAsToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new
System.Windows.Forms.ToolStripSeparator();
this.printToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.printPreviewToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new
System.Windows.Forms.ToolStripSeparator();
this.exitToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.editToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.undoToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.redoToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new
System.Windows.Forms.ToolStripSeparator();
this.cutToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.copyToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.pasteToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator4 = new
System.Windows.Forms.ToolStripSeparator();
this.selectAllToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.toolsToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.customizeToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.optionsToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.contentsToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.indexToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.searchToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator5 = new
System.Windows.Forms.ToolStripSeparator();
this.aboutToolStripMenuItem = new
System.Windows.Forms.ToolStripMenuItem();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabel1 = new
System.Windows.Forms.ToolStripStatusLabel();
this.menuStrip1.SuspendLayout();
this.statusStrip1.SuspendLayout();
this.SuspendLayout();
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new
System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem,
this.editToolStripMenuItem,
this.toolsToolStripMenuItem,
this.helpToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(292, 24);
this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new
System.Windows.Forms.ToolStripItem[] {
this.newToolStripMenuItem,
this.openToolStripMenuItem,
this.toolStripSeparator,
this.saveToolStripMenuItem,
this.saveAsToolStripMenuItem,
this.toolStripSeparator1,
this.printToolStripMenuItem,
this.printPreviewToolStripMenuItem,
this.toolStripSeparator2,
this.exitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(35,
20);
this.fileToolStripMenuItem.Text = "&File";
this.fileToolStripMenuItem.DropDownItemClicked += new
System.Windows.Forms.ToolStripItemClickedEventHandler(this.fileToolStripMenu
Item_DropDownItemClicked);
//
// newToolStripMenuItem
//
this.newToolStripMenuItem.Image = ((System.Drawing.Image)
(resources.GetObject("newToolStripMenuItem.Image")));
this.newToolStripMenuItem.ImageTransparentColor =
System.Drawing.Color.Magenta;
this.newToolStripMenuItem.Name = "newToolStripMenuItem";
this.newToolStripMenuItem.ShortcutKeys =
((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
System.Windows.Forms.Keys.N)));
this.newToolStripMenuItem.Size = new System.Drawing.Size(152,
22);
this.newToolStripMenuItem.Text = "&New";
//
// openToolStripMenuItem
//
this.openToolStripMenuItem.Image = ((System.Drawing.Image)
(resources.GetObject("openToolStripMenuItem.Image")));
this.openToolStripMenuItem.ImageTransparentColor =
System.Drawing.Color.Magenta;
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
this.openToolStripMenuItem.ShortcutKeys =
((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
System.Windows.Forms.Keys.O)));
this.openToolStripMenuItem.Size = new System.Drawing.Size(152,
22);
this.openToolStripMenuItem.Text = "&Open";
//
// toolStripSeparator
//
this.toolStripSeparator.Name = "toolStripSeparator";
this.toolStripSeparator.Size = new System.Drawing.Size(149, 6);
//
// saveToolStripMenuItem
//
this.saveToolStripMenuItem.Image = ((System.Drawing.Image)
(resources.GetObject("saveToolStripMenuItem.Image")));
this.saveToolStripMenuItem.ImageTransparentColor =
System.Drawing.Color.Magenta;
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
this.saveToolStripMenuItem.ShortcutKeys =
((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
System.Windows.Forms.Keys.S)));
this.saveToolStripMenuItem.Size = new System.Drawing.Size(152,
22);
this.saveToolStripMenuItem.Text = "&Save";
//
// saveAsToolStripMenuItem
//
this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(152,
22);
this.saveAsToolStripMenuItem.Text = "Save &As";
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6);
//
// printToolStripMenuItem
//
this.printToolStripMenuItem.Image = ((System.Drawing.Image)
(resources.GetObject("printToolStripMenuItem.Image")));
this.printToolStripMenuItem.ImageTransparentColor =
System.Drawing.Color.Magenta;
this.printToolStripMenuItem.Name = "printToolStripMenuItem";
this.printToolStripMenuItem.ShortcutKeys =
((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
System.Windows.Forms.Keys.P)));
this.printToolStripMenuItem.Size = new System.Drawing.Size(152,
22);
this.printToolStripMenuItem.Text = "&Print";
//
// printPreviewToolStripMenuItem
//
this.printPreviewToolStripMenuItem.Image =
((System.Drawing.Image)
(resources.GetObject("printPreviewToolStripMenuItem.Image")));
this.printPreviewToolStripMenuItem.ImageTransparentColor =
System.Drawing.Color.Magenta;
this.printPreviewToolStripMenuItem.Name =
"printPreviewToolStripMenuItem";
this.printPreviewToolStripMenuItem.Size = new
System.Drawing.Size(152, 22);
this.printPreviewToolStripMenuItem.Text = "Print Pre&view";
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(149, 6);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(152,
22);
this.exitToolStripMenuItem.Text = "E&xit";
//
// editToolStripMenuItem
//
this.editToolStripMenuItem.DropDownItems.AddRange(new
System.Windows.Forms.ToolStripItem[] {
this.undoToolStripMenuItem,
this.redoToolStripMenuItem,
this.toolStripSeparator3,
this.cutToolStripMenuItem,
this.copyToolStripMenuItem,
this.pasteToolStripMenuItem,
this.toolStripSeparator4,
this.selectAllToolStripMenuItem});
this.editToolStripMenuItem.Name = "editToolStripMenuItem";
this.editToolStripMenuItem.Size = new System.Drawing.Size(37,
20);
this.editToolStripMenuItem.Text = "&Edit";
//
// undoToolStripMenuItem
//
this.undoToolStripMenuItem.Name = "undoToolStripMenuItem";
this.undoToolStripMenuItem.ShortcutKeys =
((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
System.Windows.Forms.Keys.Z)));
this.undoToolStripMenuItem.Size = new System.Drawing.Size(150,
22);
this.undoToolStripMenuItem.Text = "&Undo";
//
// redoToolStripMenuItem
//
this.redoToolStripMenuItem.Name = "redoToolStripMenuItem";
this.redoToolStripMenuItem.ShortcutKeys =
((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
System.Windows.Forms.Keys.Y)));
this.redoToolStripMenuItem.Size = new System.Drawing.Size(150,
22);
this.redoToolStripMenuItem.Text = "&Redo";
//
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(147, 6);
//
// cutToolStripMenuItem
//
this.cutToolStripMenuItem.Image = ((System.Drawing.Image)
(resources.GetObject("cutToolStripMenuItem.Image")));
this.cutToolStripMenuItem.ImageTransparentColor =
System.Drawing.Color.Magenta;
this.cutToolStripMenuItem.Name = "cutToolStripMenuItem";
this.cutToolStripMenuItem.ShortcutKeys =
((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
System.Windows.Forms.Keys.X)));
this.cutToolStripMenuItem.Size = new System.Drawing.Size(150,
22);
this.cutToolStripMenuItem.Text = "Cu&t";
//
// copyToolStripMenuItem
//
this.copyToolStripMenuItem.Image = ((System.Drawing.Image)
(resources.GetObject("copyToolStripMenuItem.Image")));
this.copyToolStripMenuItem.ImageTransparentColor =
System.Drawing.Color.Magenta;
this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";
this.copyToolStripMenuItem.ShortcutKeys =
((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
System.Windows.Forms.Keys.C)));
this.copyToolStripMenuItem.Size = new System.Drawing.Size(150,
22);
this.copyToolStripMenuItem.Text = "&Copy";
//
// pasteToolStripMenuItem
//
this.pasteToolStripMenuItem.Image = ((System.Drawing.Image)
(resources.GetObject("pasteToolStripMenuItem.Image")));
this.pasteToolStripMenuItem.ImageTransparentColor =
System.Drawing.Color.Magenta;
this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem";
this.pasteToolStripMenuItem.ShortcutKeys =
((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
System.Windows.Forms.Keys.V)));
this.pasteToolStripMenuItem.Size = new System.Drawing.Size(150,
22);
this.pasteToolStripMenuItem.Text = "&Paste";
//
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(147, 6);
//
// selectAllToolStripMenuItem
//
this.selectAllToolStripMenuItem.Name =
"selectAllToolStripMenuItem";
this.selectAllToolStripMenuItem.Size = new
System.Drawing.Size(150, 22);
this.selectAllToolStripMenuItem.Text = "Select &All";
//
// toolsToolStripMenuItem
//
this.toolsToolStripMenuItem.DropDownItems.AddRange(new
System.Windows.Forms.ToolStripItem[] {
this.customizeToolStripMenuItem,
this.optionsToolStripMenuItem});
this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
this.toolsToolStripMenuItem.Size = new System.Drawing.Size(44,
20);
this.toolsToolStripMenuItem.Text = "&Tools";
//
// customizeToolStripMenuItem
//
this.customizeToolStripMenuItem.Name =
"customizeToolStripMenuItem";
this.customizeToolStripMenuItem.Size = new
System.Drawing.Size(134, 22);
this.customizeToolStripMenuItem.Text = "&Customize";
//
// optionsToolStripMenuItem
//
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
this.optionsToolStripMenuItem.Size = new
System.Drawing.Size(134, 22);
this.optionsToolStripMenuItem.Text = "&Options";
//
// helpToolStripMenuItem
//
this.helpToolStripMenuItem.DropDownItems.AddRange(new
System.Windows.Forms.ToolStripItem[] {
this.contentsToolStripMenuItem,
this.indexToolStripMenuItem,
this.searchToolStripMenuItem,
this.toolStripSeparator5,
this.aboutToolStripMenuItem});
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
this.helpToolStripMenuItem.Size = new System.Drawing.Size(40,
20);
this.helpToolStripMenuItem.Text = "&Help";
//
// contentsToolStripMenuItem
//
this.contentsToolStripMenuItem.Name =
"contentsToolStripMenuItem";
this.contentsToolStripMenuItem.Size = new
System.Drawing.Size(129, 22);
this.contentsToolStripMenuItem.Text = "&Contents";
//
// indexToolStripMenuItem
//
this.indexToolStripMenuItem.Name = "indexToolStripMenuItem";
this.indexToolStripMenuItem.Size = new System.Drawing.Size(129,
22);
this.indexToolStripMenuItem.Text = "&Index";
//
// searchToolStripMenuItem
//
this.searchToolStripMenuItem.Name = "searchToolStripMenuItem";
this.searchToolStripMenuItem.Size = new System.Drawing.Size(129,
22);
this.searchToolStripMenuItem.Text = "&Search";
//
// toolStripSeparator5
//
this.toolStripSeparator5.Name = "toolStripSeparator5";
this.toolStripSeparator5.Size = new System.Drawing.Size(126, 6);
//
// aboutToolStripMenuItem
//
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(129,
22);
this.aboutToolStripMenuItem.Text = "&About...";
//
// statusStrip1
//
this.statusStrip1.Items.AddRange(new
System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel1});
this.statusStrip1.Location = new System.Drawing.Point(0, 251);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(292, 22);
this.statusStrip1.TabIndex = 1;
this.statusStrip1.Text = "statusStrip1";
//
// toolStripStatusLabel1
//
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.Size = new System.Drawing.Size(109,
17);
this.toolStripStatusLabel1.Text = "toolStripStatusLabel1";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.menuStrip1);
this.MainMenuStrip = this.menuStrip1;
this.Name = "Form1";
this.Text = "Form1";
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
Compilando o código
Este exemplo requer:
Confira também
MenuStrip
ToolStrip
StatusStrip
Controle MenuStrip
Como: Configurar a mesclagem de
menu automática para aplicativos MDI
Artigo • 02/06/2023
3. Crie um formulário filho MDI e defina sua MdiParent propriedade como o nome
do formulário pai.
6. Adicione itens de menu aos formulários MenuStrip filho que você deseja mesclar
no formulário MenuStrip pai quando o formulário filho for ativado.
Confira também
MenuStrip
ToolStripMenuItem
Visão geral do controle MenuStrip
Mesclando itens de menu no controle
MenuStrip dos Windows Forms
Artigo • 02/06/2023
Este tópico descreve os conceitos básicos associados aos itens de menu de mesclagem
em um aplicativo MDI.
Conceitos gerais
Os procedimentos de mesclagem envolvem um controle do código-fonte e de destino:
Você pode mesclar itens de menu de forma manual ou automática. Os itens de menu
são mesclados da mesma maneira para os dois métodos, mas a mesclagem é ativada de
forma diferente, conforme discutido nas seções "Mesclagem manual" e "Mesclagem
automática" neste tópico. Tanto na mesclagem manual quanto na automática, cada ação
de mesclagem afeta a próxima.
Valores de MergeAction
Você define a ação de mesclagem em itens de menu na origem MenuStrip usando a
MergeAction propriedade.
A tabela a seguir descreve o significado e o uso típico das ações de mesclagem
disponíveis.
MatchOnly Localiza uma correspondência de Criar uma estrutura de menu que insere
texto ou usa o MergeIndex valor se ou adiciona itens de menu em um
nenhuma correspondência de texto submenu ou remove itens de menu de
for encontrada e, em seguida, um submenu. Por exemplo, você pode
adiciona todos os itens suspensos da adicionar um item de menu de um filho
origem ao destino. MDI a um menu Salvar como
principalMenuStrip.
Manual de mesclagem
Somente MenuStrip os controles participam da mesclagem automática. Para combinar
os itens de outros controles, como ToolStrip e StatusStrip controles, você deve mesclar
manualmente, chamando o código e RevertMerge os Merge métodos conforme
necessário.
Mesclagem automática
Você pode usar a mesclagem automática para aplicativos MDI, ativando o formulário de
origem. Para usar um MenuStrip aplicativo MDI, defina a MainMenuStrip propriedade
como o destino MenuStrip para que as ações de mesclagem executadas na origem
MenuStrip sejam refletidas no destino MenuStrip.
Confira também
ToolStripManager
MenuStrip
Controle MenuStrip
Como: Criar uma lista de janelas MDI com MenuStrip
Como: Configurar a mesclagem de menu automática para aplicativos MDI
Passo a passo: Fornecer itens de menu
padrão para um formulário
Artigo • 02/06/2023
Você pode fornecer um menu padrão para seus formulários com o MenuStrip controle.
Este passo a passo demonstra como usar um MenuStrip controle para criar um menu
padrão. O formulário também responde quando um usuário seleciona um item de
menu. As seguintes tarefas são ilustradas nesta explicação passo a passo:
Quando terminar, você terá um formulário com um menu padrão que exibe seleções de
item de menu em um StatusStrip controle.
Para copiar o código deste tópico como uma única lista, consulte Como fornecer itens
de menu padrão para um formulário.
Pré-requisitos
Você precisará do Visual Studio para concluir este passo a passo.
Criar o projeto
1. No Visual Studio, crie um projeto de aplicativo do Windows chamado
StandardMenuForm (File>New>Project>Visual C# ou Visual Basic>Classic
Desktop>Windows Forms Application).
3. Clique no item de menu Arquivo para ver seus itens de menu padrão e ícones
correspondentes.
1. Clique no item de menu Arquivo que você criou na seção Criando um menu
padrão.
C#
C#
Próximas etapas
Neste passo a passo, você criou um formulário com um menu padrão. Você pode usar a
ToolStrip família de controles para muitas outras finalidades:
Crie menus de atalho para seus controles com ContextMenuStrip. Para obter mais
informações, consulte Visão geral do componente ContextMenu.
Confira também
MenuStrip
ToolStrip
StatusStrip
Controle MenuStrip
Controle MonthCalendar (Windows
Forms)
Artigo • 02/06/2023
O controle MonthCalendar dos Windows Forms apresenta uma interface gráfica intuitiva
para os usuários exibirem e definirem as informações de data. O controle exibe uma
grade que contém os dias numerados do mês, organizados em colunas abaixo dos dias
da semana. Você pode selecionar um outro mês clicando nos botões de seta em um dos
lados da legenda do mês. Ao contrário do controle semelhante DateTimePicker , você
pode selecionar um intervalo de datas com esse controle; no entanto, o DateTimePicker
controle permite que você defina horários e datas.
Nesta seção
Visão geral do controle MonthCalendar
Apresenta os conceitos gerais do controle MonthCalendar , que permite que usuários
exibam e definam as informações de data para um aplicativo.
Como exibir dados específicos em negrito com o controle MonthCalendar dos Windows
Forms
Explica como configurar determinadas datas em negrito.
Referência
MonthCalendar
Fornece informações de referência sobre a classe e seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Controle DateTimePicker
Descreve um controle semelhante a MonthCalendar, embora o DateTimePicker controle
também permita que você selecione uma hora e não permita que você selecione um
intervalo de datas.
Visão geral do controle MonthCalendar
(Windows Forms)
Artigo • 02/06/2023
O controle MonthCalendar dos Windows Forms apresenta uma interface gráfica intuitiva
para os usuários exibirem e definirem as informações de data. O controle exibe um
calendário: uma grade que contém os dias numerados do mês, organizados em colunas
abaixo dos dias da semana, com o intervalo selecionado de datas realçado. Você pode
selecionar um outro mês clicando nos botões de seta em um dos lados da legenda do
mês. Ao contrário do controle semelhante DateTimePicker , você pode selecionar mais
de uma data com esse controle. Para obter mais informações sobre o DateTimePicker
controle, consulte Controle DateTimePicker.
Você também pode definir determinadas datas a serem exibidas em negrito uma vez,
anualmente ou mensalmente, adicionando DateTime objetos ao BoldedDates,
AnnuallyBoldedDatese MonthlyBoldedDates propriedades. Para obter mais informações,
consulte Como exibir dados específicos em negrito com o controle MonthCalendar dos
Windows Forms.
Confira também
MonthCalendar
Controle MonthCalendar
Como alterar a aparência do controle
MonthCalendar dos Windows Forms
Artigo • 02/06/2023
C#
monthCalendar1.TitleBackColor = System.Drawing.Color.Blue;
monthCalendar1.TrailingForeColor = System.Drawing.Color.Red;
monthCalendar1.TitleForeColor = System.Drawing.Color.Yellow;
7 Observação
C#
C#
C#
monthCalendar1.ShowWeekNumbers = true;
Confira também
Controle MonthCalendar
Como selecionar um intervalo de datas no controle MonthCalendar dos Windows
Forms
Como exibir dados específicos em negrito com o controle MonthCalendar dos
Windows Forms
Como exibir mais de um mês no controle MonthCalendar dos Windows Forms
Como exibir mais de um mês no
controle MonthCalendar dos Windows
Forms
Artigo • 02/06/2023
O controle Windows Forms MonthCalendar pode exibir até 12 meses por vez. Por
padrão, o controle exibe apenas um mês, mas você pode especificar quantos meses são
exibidos e como eles são organizados dentro do controle. Quando você altera as
dimensões do calendário, o controle é redimensionado, portanto, certifique-se de que
há espaço suficiente no formulário para as novas dimensões.
C#
Confira também
Controle MonthCalendar
Como selecionar um intervalo de datas no controle MonthCalendar dos Windows
Forms
Como alterar a aparência do controle MonthCalendar dos Windows Forms
Como exibir dados específicos em
negrito com o controle MonthCalendar
dos Windows Forms
Artigo • 02/06/2023
O controle Windows Forms MonthCalendar pode exibir dias em negrito, como datas
singulares ou em uma base repetida. Você pode fazer isso para chamar atenção para
datas especiais, como feriados e fins de semana.
C#
C#
monthCalendar1.AddBoldedDate(myVacation1);
monthCalendar1.AddBoldedDate(myVacation2);
–ou–
C#
DateTime[] VacationDates = {myVacation1, myVacation2};
monthCalendar1.BoldedDates = VacationDates;
C#
monthCalendar1.RemoveBoldedDate(myVacation1);
monthCalendar1.RemoveBoldedDate(myVacation2);
–ou–
C#
monthCalendar1.RemoveAllBoldedDates();
C#
monthCalendar1.UpdateBoldedDates();
Confira também
Controle MonthCalendar
Como selecionar um intervalo de datas no controle MonthCalendar dos Windows
Forms
Como alterar a aparência do controle MonthCalendar dos Windows Forms
Como exibir mais de um mês no controle MonthCalendar dos Windows Forms
Como selecionar um intervalo de datas
no controle MonthCalendar dos
Windows Forms
Artigo • 02/06/2023
C#
C#
–ou–
C#
monthCalendar1.SelectionStart = projectStart;
monthCalendar1.SelectionEnd = projectEnd;
Confira também
Controle MonthCalendar
Como alterar a aparência do controle MonthCalendar dos Windows Forms
Como exibir dados específicos em negrito com o controle MonthCalendar dos
Windows Forms
Como exibir mais de um mês no controle MonthCalendar dos Windows Forms
Componente NotifyIcon (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do componente NotifyIcon
Apresenta os conceitos gerais do componente, que NotifyIcon permite que os usuários
vejam ícones para processos em execução em segundo plano que não têm uma
interface do usuário.
Referência
NotifyIcon
Fornece informações de referência sobre a classe e seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do componente NotifyIcon
(Windows Forms)
Artigo • 02/06/2023
O componente Windows Forms NotifyIcon normalmente é usado para exibir ícones para
processos executados em segundo plano e não mostram uma interface do usuário na
maior parte do tempo. Por exemplo, um programa de proteção contra vírus que pode
ser acessado clicando em um ícone na área de notificação de status da barra de tarefas.
Opções do NotifyIcons
Você pode associar dicas de balão, menus de atalho e Dicas de Ferramenta a um
NotifyIcon para ajudar o usuário.
Confira também
NotifyIcon
Componente NotifyIcon
Como: Adicionar ícones do aplicativo à
TaskBar com o componente NotifyIcon
do Windows Forms
Artigo • 21/06/2023
7 Observação
Definir o ícone
1. Atribua um valor à Icon propriedade . O valor deve ser do tipo
System.Drawing.Icon e pode ser carregados de um arquivo .ico. Você pode
especificar o arquivo de ícone no código ou clicando no botão de reticências ( )
ao lado da Icon propriedade na janela Propriedades e selecionando o arquivo na
caixa de diálogo Abrir exibida.
C#
Confira também
NotifyIcon
Icon
Como: Associar um menu de atalho a um componente NotifyIcon do Windows
Forms
Componente NotifyIcon
Visão geral do componente NotifyIcon
Como: Associar um menu de atalho a
um componente NotifyIcon do
Windows Forms
Artigo • 21/06/2023
7 Observação
7 Observação
Se você quiser que seu aplicativo seja minimizado na inicialização ao exibir uma
instância do NotifyIcon componente na barra de tarefas, defina a propriedade
Minimized do WindowState formulário main como e verifique se a NotifyIcon
propriedade do Visible componente está definida como true .
Com essa propriedade definida, o menu de atalho será exibido ao clicar no ícone
da barra de tarefas.
Com essa propriedade definida, o menu de atalho será exibido ao clicar no ícone
da barra de tarefas.
7 Observação
VB
C#
7 Observação
Você deve inicializar notifyIcon1 e contextMenu1, , o que pode ser feito incluindo a
instrução a seguir no construtor do formulário:
C++
Confira também
NotifyIcon
Icon
Como: Adicionar ícones do aplicativo à TaskBar com o componente NotifyIcon do
Windows Forms
Componente NotifyIcon
Visão geral do componente NotifyIcon
Controle NumericUpDown (Windows
Forms)
Artigo • 02/06/2023
O controle NumericUpDown dos Windows Forms parece com a combinação de uma caixa
de texto e um par de setas em que o usuário pode clicar para ajustar um valor. O
controle exibe e define um único valor numérico de uma lista de opções. O usuário
pode aumentar e diminuir o número clicando nos botões para cima e para baixo,
pressionando as teclas de seta para CIMA e para BAIXO ou digitando um número. Clicar
na tecla de seta para CIMA move o valor até seu máximo; clicar na tecla de seta para
BAIXO move a posição para o mínimo. Um exemplo de onde esse tipo de controle pode
ser útil é para controle de volume em um reprodutor de música. Controles numéricos
para cima e para baixo são usados em alguns aplicativos do painel de controle do
Windows.
Nesta seção
Visão geral do controle NumericUpDown
Apresenta os conceitos gerais do controle NumericUpDown , que permite que os usuários
procurem e selecionem de uma lista de valores numéricos.
Referência
NumericUpDown
Fornece informações de referência sobre a NumericUpDown classe e seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Controle DomainUpDown
Introduz um controle semelhante a NumericUpDown, exceto que o DomainUpDown
controle exibe cadeia de caracteres em vez de valores numéricos.
Visão geral do controle
NumericUpDown (Windows Forms)
Artigo • 02/06/2023
Devido à sua funcionalidade versátil, esse controle é uma opção óbvia, por exemplo, se
você quiser criar um controle de volume para aplicativo de player de música. O
NumericUpDown controle é usado em muitos aplicativos do Windows Painel de
Controle.
Confira também
NumericUpDown
Controle NumericUpDown
Como: Definir o formato para o controle NumericUpDown do Windows Forms
Controle TextBox
Como: Definir e retornar valores
numéricos com o controle
NumericUpDown do Windows Forms
Artigo • 02/06/2023
C#
numericUpDown1.Value = 55;
-ou-
C#
numericUpDown1.UpButton();
C#
Confira também
NumericUpDown
NumericUpDown.Value
NumericUpDown.Increment
NumericUpDown.UpButton
NumericUpDown.DownButton
Controle NumericUpDown
Visão geral do controle NumericUpDown
Como: Definir o formato para o controle
NumericUpDown do Windows Forms
Artigo • 02/06/2023
C#
numericUpDown1.DecimalPlaces = 2;
numericUpDown1.ThousandsSeparator = true;
-ou-
C#
numericUpDown1.Hexadecimal = true;
7 Observação
Confira também
NumericUpDown
Controle NumericUpDown
Visão geral do controle NumericUpDown
Componente OpenFileDialog (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do componente OpenFileDialog
Apresenta os conceitos gerais do componente, o OpenFileDialog que permite exibir
uma caixa de diálogo pré-configurada que os usuários podem usar para abrir arquivos.
Referência
OpenFileDialog
Fornece informações de referência sobre a OpenFileDialog classe e seus membros.
Seções relacionadas
Controles e componentes da caixa de diálogo
Descreve um conjunto de controles e componentes que permitem que os usuários
executem interações padrão com o aplicativo ou sistema.
Use o ShowDialog método para exibir a caixa de diálogo em tempo de execução. Você
pode permitir que os usuários selecionem vários arquivos para serem abertos com a
Multiselect propriedade. Além disso, você pode usar a ShowReadOnly propriedade para
determinar se uma caixa de seleção somente leitura aparece na caixa de diálogo. A
ReadOnlyChecked propriedade indica se a caixa de seleção somente leitura está
selecionada. Por fim, a Filter propriedade define a cadeia de caracteres de filtro de nome
de arquivo atual, que determina as opções que aparecem na caixa "Arquivos do tipo" na
caixa de diálogo.
Confira também
OpenFileDialog
Componente OpenFileDialog
Como abrir arquivos com o
OpenFileDialog
Artigo • 21/06/2023
Você pode criar e executar esses exemplos como .NET Framework aplicativos na linha de
comando C# ou Visual Basic. Para obter mais informações, consulte Compilação de linha
de comando com csc.exe ou Compilar na linha de comando.
A partir do .NET Core 3.0, você também pode compilar e executar os exemplos como
aplicativos .NET Core do Windows de uma pasta que tem um arquivo de projeto
name.csproj da pasta> do .NET Core Windows Forms<.
C#
using System;
using System.Drawing;
using System.IO;
using System.Security;
using System.Windows.Forms;
public class OpenFileDialogForm : Form
{
[STAThread]
public static void Main()
{
Application.SetCompatibleTextRenderingDefault(false);
Application.EnableVisualStyles();
Application.Run(new OpenFileDialogForm());
}
public OpenFileDialogForm()
{
openFileDialog1 = new OpenFileDialog();
selectButton = new Button
{
Size = new Size(100, 20),
Location = new Point(15, 15),
Text = "Select file"
};
selectButton.Click += new EventHandler(SelectButton_Click);
textBox1 = new TextBox
{
Size = new Size(300, 300),
Location = new Point(15, 40),
Multiline = true,
ScrollBars = ScrollBars.Vertical
};
ClientSize = new Size(330, 360);
Controls.Add(selectButton);
Controls.Add(textBox1);
}
private void SetText(string text)
{
textBox1.Text = text;
}
private void SelectButton_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
var sr = new StreamReader(openFileDialog1.FileName);
SetText(sr.ReadToEnd());
}
catch (SecurityException ex)
{
MessageBox.Show($"Security error.\n\nError message:
{ex.Message}\n\n" +
$"Details:\n\n{ex.StackTrace}");
}
}
}
}
C#
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Security;
using System.Windows.Forms;
public OpenFileDialogForm()
{
openFileDialog1 = new OpenFileDialog()
{
FileName = "Select a text file",
Filter = "Text files (*.txt)|*.txt",
Title = "Open text file"
};
Confira também
OpenFileDialog
Componente OpenFileDialog
Componente PageSetupDialog
(Windows Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do componente PageSetupDialog
Apresenta os conceitos gerais do PageSetupDialog componente, que você pode usar
para exibir uma caixa de diálogo pré-configurada que os usuários podem usar para
manipular as configurações de página.
Referência
PageSetupDialog
Fornece informações de referência sobre a classe e seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Confira também
PageSetupDialog
Componente PageSetupDialog
Como: Determinar propriedades de
página usando o componente
PageSetupDialog
Artigo • 21/06/2023
C#
private void button1_Click(object sender, System.EventArgs e)
{
// The print document 'myDocument' used below
// is merely for an example.
// You will have to specify your own print document.
pageSetupDialog1.Document = myDocument;
// Sets the print document's color setting to false,
// so that the page will not be printed in color.
pageSetupDialog1.Document.DefaultPageSettings.Color = false;
pageSetupDialog1.ShowDialog();
}
C#
Confira também
PageSetupDialog
Como: criar trabalhos de impressão padrão do Windows Forms
Componente PageSetupDialog
Controle de painel (Windows Forms)
Artigo • 02/06/2023
Windows forms Panel são usados para fornecer um grupo identificável para outros
controles. Normalmente, você usa painéis para subdividir um formulário por função. O
Panel controle é semelhante ao controle GroupBox ; no entanto, somente Panel o
controle pode ter barras de rolagem e GroupBox apenas o controle exibe uma legenda.
Nesta seção
Visão geral do controle de painel
Explica o que é esse controle e seus principais recursos e propriedades.
Referência
Panel
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Panel Windows Forms controles são usados para fornecer um agrupamento identificável
para outros controles. Normalmente, você usa painéis para subdividir um formulário por
função. Por exemplo, você pode ter um formulário de pedido que especifica as opções
de mala direta, como qual carrier noturna usar. Agrupar todas as opções em um painel
fornece ao usuário uma indicação visual lógica. Em tempo de design, todos os controles
podem ser movidos facilmente – quando você move o Panel controle, todos os
controles contidos também se movem. Os controles agrupados em um painel podem
ser acessados por meio de sua Controls propriedade. Essa propriedade retorna uma
coleção de Control instâncias, portanto, você normalmente precisará converter um
controle recuperado dessa forma para seu tipo específico.
Propriedades da chave
Para exibir barras de rolagem, defina a AutoScroll propriedade como true . Você
também pode personalizar a aparência do painel definindo o , BackgroundImagee
BorderStyle as BackColorpropriedades. Para obter mais informações sobre as
propriedades e BackgroundImage as BackColor propriedades, consulte Como definir o
plano de fundo de um painel. A BorderStyle propriedade determina se o painel está
descrito sem borda visível (None), uma linha simples (FixedSingle) ou uma linha
sombreada (Fixed3D).
Confira também
Panel
Controle GroupBox
Como: Agrupar controles com o controle de painel do Windows Forms usando o
Designer
Como: Definir a tela de fundo de um painel do Windows Forms usando o Designer
Como: Agrupar controles com o
controle de painel do Windows Forms
usando o Designer
Artigo • 02/06/2023
Panel Windows Forms controles são usados para agrupar outros controles. Há três
razões para agrupar controles. Uma delas é o agrupamento visual de elementos de
formulários relacionados para uma interface do usuário clara; a outra é o agrupamento
programático dos botões de opção, por exemplo; a última é para mover os controles
como uma unidade em tempo de design.
3. (Opcional) Se você quiser adicionar uma borda a um painel, defina sua BorderStyle
propriedade. Há três opções: Fixed3D, e FixedSingleNone.
Confira também
Controle do painel
Visão geral do controle de painel
Como: Definir a tela de fundo de um painel
Como definir a tela de fundo de um
painel Windows Forms
Artigo • 02/06/2023
um controle de Windows Forms Panel pode exibir uma cor de plano de fundo e uma
imagem de tela de fundo. A BackColor propriedade define a cor do plano de fundo para
os controles contidos, como rótulos e botões de opção. Se a BackgroundImage
propriedade não for definida, a BackColor seleção preencherá o painel inteiro. Se a
BackgroundImage propriedade for definida, a imagem será exibida atrás dos controles
contidos.
C#
panel1.BackColor = Color.AliceBlue;
C#
Confira também
BackColor
BackgroundImage
Controle do painel
Visão geral do controle de painel
Como definir a tela de fundo de um
painel Windows Forms usando o
Designer
Artigo • 02/06/2023
Um controle Windows Forms Panel pode exibir uma cor de tela de fundo e uma imagem
de plano de fundo. A BackColor propriedade define a cor da tela de fundo para
controles contidos no painel, como rótulos e botões de opção. Se a BackgroundImage
propriedade não estiver definida, a BackColor seleção preencherá todo o painel. Se a
BackgroundImage propriedade estiver definida, a imagem será exibida atrás dos
controles contidos no painel.
4. Selecione a guia Web ou Sistema para exibir uma lista de nomes predefinidos para
cores e, em seguida, selecione uma cor.
Confira também
BackColor
BackgroundImage
Controle do painel
Visão geral do controle de painel
Como: Agrupar controles com o controle de painel do Windows Forms usando o
Designer
Controle PictureBox (Windows Forms)
Artigo • 02/06/2023
O controle Windows Forms PictureBox é usado para exibir gráficos no formato bitmap,
GIF, JPEG, metafile ou ícone.
Nesta seção
Visão geral do controle PictureBox
Explica o que é esse controle e seus principais recursos e propriedades.
Referência
PictureBox
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle PictureBox
(Windows Forms)
Artigo • 02/06/2023
O controle Windows Forms PictureBox é usado para exibir gráficos no formato bitmap,
GIF, JPEG, metafile ou ícone.
Confira também
PictureBox
Como: Carregar uma imagem usando o designer
Como: Modificar o tamanho ou o posicionamento de uma imagem em tempo de
execução
Como: Definir imagens em tempo de execução
Controle PictureBox
Como carregar uma imagem usando o
designer (Windows Forms)
Artigo • 02/06/2023
Bitmap .bmp
Ícone .ico
GIF .gif
Metarquivo .wmf
JPEG .jpg
Confira também
PictureBox
Visão geral do controle PictureBox
Como: Modificar o tamanho ou o posicionamento de uma imagem em tempo de
execução
Como: Definir imagens em tempo de execução
Controle PictureBox
Como modificar o tamanho ou a
colocação de uma imagem em tempo
de execução (Windows Forms)
Artigo • 02/06/2023
Confira também
PictureBox
Como: Carregar uma imagem usando o designer
Visão geral do controle PictureBox
Como: Definir imagens em tempo de execução
Controle PictureBox
Como definir imagens em tempo de
execução (Windows Forms)
Artigo • 02/06/2023
C#
C#
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();
pictureBox1.Image = null;
}
7 Observação
Para obter mais informações sobre por que você deve usar o Dispose método
dessa forma, consulte Limpar Recursos Não Gerenciados.
Esse código limpará a imagem mesmo que um gráfico tenha sido carregado no
controle no momento do design.
Confira também
PictureBox
Image.FromFile
Visão geral do controle PictureBox
Como: Carregar uma imagem usando o designer
Como: Modificar o tamanho ou o posicionamento de uma imagem em tempo de
execução
Controle PictureBox
Componente PrintDialog (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do componente PrintDialog
Apresenta os conceitos gerais do componente, que PrintDialog permite exibir uma
caixa de diálogo pré-configurada que os usuários podem usar para selecionar uma
impressora, escolher páginas para imprimir e determinar as configurações relacionadas
à impressão.
Referência
PrintDialog
Fornece informações de referência sobre a classe e seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do componente PrintDialog
(Windows Forms)
Artigo • 02/06/2023
Confira também
PrintDialog
Componente PrintDialog
Como exibir o componente PrintDialog
Artigo • 02/06/2023
Confira também
Como: criar trabalhos de impressão padrão do Windows Forms
Como: capturar a entrada do usuário de um PrintDialog em tempo de execução
Controle PrintPreviewDialog
Componente PrintDialog
Suporte à impressão no Windows Forms
controles Windows Forms
Componente PrintDocument (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do componente PrintDocument
Apresenta os conceitos gerais do componente PrintDocument , que permite definir
propriedades que descrevem o que imprimir e inicia a impressão em um aplicativo
baseado em Windows.
Referência
PrintDocument
Fornece informações de referência sobre a classe e seus membros.
Seções relacionadas
Suporte à impressão no Windows Forms
Apresenta uma lista de tópicos de impressão relacionados ao Windows Forms.
Componente PrintDialog
Apresenta os conceitos gerais do componente, que PrintDialog permite exibir uma caixa
de diálogo pré-configurada que os usuários podem usar para selecionar uma
impressora, escolher páginas para imprimir e determinar configurações relacionadas à
impressão.
Controle PrintPreviewControl
Apresenta os conceitos gerais do PrintPreviewControl, que você pode usar para criar sua
própria caixa de diálogo ou componente de visualização de impressão.
Controle PrintPreviewDialog
Apresenta os conceitos gerais do controle, o PrintPreviewDialog que permite exibir uma
caixa de diálogo pré-configurada que os usuários podem usar para ver uma versão do
documento como ele será exibido quando ele for impresso.
Visão geral do componente
PrintDocument (Windows Forms)
Artigo • 21/06/2023
Confira também
Graphics
PrintDocument
Suporte à impressão no Windows Forms
Componente PrintDocument
Controle PrintPreviewControl (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do controle PrintPreviewControl
Apresenta os conceitos gerais do PrintPreviewControl , que você pode usar para criar
sua própria caixa de diálogo ou componente de visualização de impressão.
Referência
PrintPreviewControl
Fornece informações de referência sobre a classe e seus membros.
Seções relacionadas
Controle PrintPreviewDialog
Descreve uma maneira alternativa de criar a funcionalidade de visualização de
impressão.
Propriedades da chave
A propriedade chave do controle é Document, que define o documento a ser
visualizado. O documento deve ser um PrintDocument objeto. Para obter uma visão
geral da criação de documentos para impressão, confira Visão geral do componente
PrintDocument e Suporte à impressão nos Windows Forms. As Columns propriedades e
Rows as propriedades determinam o número de páginas exibidas horizontal e
verticalmente no controle. A suavização pode fazer com que o texto pareça mais suave,
mas também pode tornar a exibição mais lenta; para usá-la, defina a UseAntiAlias
propriedade como true .
Confira também
PrintPreviewControl
Visão geral do controle PrintPreviewDialog
Controle PrintPreviewControl
Controles e componentes da caixa de diálogo
Controle PrintPreviewDialog (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do controle PrintPreviewDialog
Apresenta os conceitos gerais do controle, que PrintPreviewDialog permite exibir uma
caixa de diálogo pré-configurada que os usuários podem usar para ver uma versão do
documento como ele será exibido quando ele for impresso.
Referência
PrintPreviewDialog
Fornece informações de referência sobre a classe e seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Desempenho do PrintPreviewDialog
Sob as seguintes condições, o PrintPreviewDialog controle inicializa muito lentamente:
Para aplicativos em execução no .NET Framework 4.5.2, você pode adicionar a seguinte
chave à <seção appSettings> do arquivo de configuração para melhorar o desempenho
da inicialização de PrintPreviewDialog controle:
XML
<appSettings>
<add key="EnablePrintPreviewOptimization" value="true" />
</appSettings>
Para aplicativos em execução no .NET Framework 4.6 ou versões posteriores, você pode
adicionar a seguinte opção ao <elemento AppContextSwitchOverrides> na <seção
runtime> do arquivo de configuração do aplicativo:
XML
<runtime >
<!-- AppContextSwitchOverrides values are in the form of
'key1=true|false;key2=true|false -->
<AppContextSwitchOverrides value =
"Switch.System.Drawing.Printing.OptimizePrintPreview=true" />
</runtime >
Se a opção não estiver presente ou se estiver definida como qualquer outro valor, a
otimização não será aplicada.
Confira também
PrintPreviewDialog
Visão geral do controle PrintPreviewControl
Controle PrintPreviewDialog
Controles e componentes da caixa de diálogo
Como: Exibir visualização de impressão
em aplicativos do Windows Forms
Artigo • 21/06/2023
Você pode usar o PrintPreviewDialog controle para permitir que os usuários exibam um
documento, muitas vezes antes que ele seja impresso.
Para fazer isso, você precisa especificar uma instância da PrintDocument classe ; este é o
documento a ser impresso. Para obter mais informações sobre como usar a visualização
de impressão com o PrintDocument componente, consulte Como imprimir em Windows
Forms usando a visualização de impressão.
7 Observação
C#
Confira também
Componente PrintDocument
Controle PrintPreviewDialog
Suporte à impressão no Windows Forms
Windows Forms
Controle ProgressBar (Windows Forms)
Artigo • 02/06/2023
) Importante
Nesta seção
Visão geral do controle ProgressBar
Apresenta os conceitos gerais do controle, o ProgressBar que permite exibir
graficamente o progresso de uma operação.
Referência
ProgressBar
Fornece informações de referência sobre a classe e seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle ProgressBar
(Windows Forms)
Artigo • 02/06/2023
) Importante
7 Observação
A maneira mais comum de atualizar o valor de progresso atual é escrever código para
definir a Value propriedade. No exemplo de carregamento de um arquivo grande, você
pode definir o máximo para o tamanho do arquivo em quilobytes. Por exemplo, se a
Maximum propriedade for definida como 100, a Minimum propriedade será definida
como 10 e a Value propriedade será definida como 50, cinco retângulos serão exibidos.
Isso é metade do número que pode ser exibido.
No entanto, há outras maneiras de modificar o valor exibido pelo ProgressBar controle,
além de definir a Value propriedade diretamente. A Step propriedade pode ser usada
para especificar um valor para incrementar a Value propriedade. Em seguida, chamar o
PerformStep método aumentará o valor. Para variar o valor de incremento, você pode
usar o Increment método e especificar um valor com o qual incrementar a Value
propriedade.
Outro controle que informa graficamente o usuário sobre uma ação atual é o StatusBar
controle.
) Importante
Confira também
ProgressBar
Controle ProgressBar
Como: Definir o valor exibido pelo
controle ProgressBar do Windows
Forms
Artigo • 02/06/2023
) Importante
Abordagem Descrição
Defina o Essa abordagem é útil para as tarefas em que você sabe que o total do item
valor do medido será envolvido, como ler os registros de uma fonte de dados. Além disso,
ProgressBar se você precisar definir o valor uma ou duas vezes, esta será uma maneira fácil de
controle realizar esta tarefa. Por fim, use esse processo se você precisar diminuir o valor
diretamente. exibido pela barra de progresso.
Aumente a Essa abordagem será útil quando você estiver exibindo uma contagem simples
ProgressBar entre o mínimo e máximo, como o tempo decorrido ou o número de arquivos que
exibição por foram processados de um total conhecido.
um valor
fixo.
Aumente a Essa abordagem será útil quando você precisar alterar o valor exibido várias vezes
ProgressBar em volumes diferentes. Um exemplo seria mostrar a quantidade de espaço em
exibição por disco consumida durante a gravação de uma série de arquivos no disco.
um valor
que varia.
A maneira mais direta de definir o valor exibido por uma barra de progresso é definindo
a Value propriedade. Isso pode ser feito no tempo de design ou no tempo de execução.
7 Observação
C#
Se você estiver exibindo o progresso que prossegue por um intervalo fixo, poderá
definir o valor e, em seguida, chamar um método que aumenta o ProgressBar valor
do controle por esse intervalo. Isso é útil para temporizadores e outros cenários
em que você não esteja medindo o andamento como um percentual do todo.
Para aumentar a barra de progresso com um valor fixo
1. Defina os ProgressBar valores e Maximum do controle Minimum .
3. Chame o PerformStep método para alterar o valor exibido pelo valor definido na
Step propriedade.
O exemplo de código a seguir ilustra como uma barra de progresso pode manter
uma contagem de arquivos em uma operação de cópia.
C#
Por fim, você pode aumentar o valor exibido por uma barra de progresso para que
cada aumento seja um valor exclusivo. Isso será útil quando você estiver
controlando uma série de operações exclusivas, como gravar arquivos de
tamanhos diferentes em um disco rígido ou medir o progresso como um
percentual do todo.
O exemplo de código a seguir ilustra como uma barra de progresso pode calcular
a quantidade de espaço em disco usado durante uma operação de cópia.
C#
Confira também
ProgressBar
ToolStripProgressBar
Visão geral do controle ProgressBar
Controle ProgressBar
Controle RadioButton (Windows Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do controle RadioButton
Explica o que é esse controle e seus principais recursos e propriedades.
Referência
Classe RadioButton
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle RadioButton
(Windows Forms)
Artigo • 21/06/2023
Usando o controle
Quando um RadioButton controle é clicado, sua Checked propriedade é definida true
como e o Click manipulador de eventos é chamado. O CheckedChanged evento é
gerado quando o valor da Checked propriedade é alterado. Se a AutoCheck
propriedade estiver definida true como (o padrão), quando o botão de opção for
selecionado, todas as outras pessoas no grupo serão desmarcadas automaticamente.
Essa propriedade normalmente é definida apenas como false quando o código de
validação é usado para verificar se o botão de opção selecionado é uma opção
permitida. O texto exibido dentro do controle é definido com a Text propriedade , que
pode conter atalhos de tecla de acesso. Uma tecla de acesso permite a um usuário
“clicar” no controle pressionando a tecla ALT com a tecla de acesso. Para obter mais
informações, consulte Como criar teclas de acesso para controles dos Windows Forms e
Como definir o texto exibido por um controle dos Windows Forms.
O RadioButton controle pode aparecer como um botão de comando, que parece ter
sido deprimido se selecionado, se a Appearance propriedade estiver definida
Buttoncomo . Os botões de opção também podem exibir imagens usando as Image
propriedades e ImageList . Para obter mais informações, consulte Como definir a
imagem exibida por um controle dos Windows Forms.
Confira também
RadioButton
Visão geral do controle de painel
Visão geral do controle GroupBox
Visão geral do controle CheckBox
Como criar teclas de acesso para controles dos Windows Forms
Como definir o texto exibido por um controle dos Windows Forms
Como: Agrupar controles RadioButton do Windows Forms para funcionarem como
um conjunto
Controle RadioButton
Como: Agrupar controles RadioButton
do Windows Forms para funcionarem
como um conjunto
Artigo • 02/06/2023
os controles de Windows Forms RadioButton são projetados para fornecer aos usuários
uma opção entre duas ou mais configurações, das quais apenas uma pode ser atribuída
a um procedimento ou objeto. Por exemplo, um grupo de RadioButton controles pode
exibir uma opção de operadoras de pacote para um pedido, mas apenas uma das
operadoras será usada. Portanto, somente um RadioButton de cada vez pode ser
selecionado, mesmo que ele faça parte de um grupo funcional.
Confira também
RadioButton
Visão geral do controle RadioButton
Visão geral do controle de painel
Visão geral do controle GroupBox
Visão geral do controle CheckBox
Controle RadioButton
Controle RichTextBox (Windows Forms)
Artigo • 02/06/2023
O controle RichTextBox dos Windows Forms é usado para exibir, inserir e manipular
texto com formatação. O RichTextBox controle faz tudo o que o TextBox controle faz,
mas também pode exibir fontes, cores e links; carregar texto e imagens inseridas de um
arquivo; desfazer e refazer operações de edição; e localizar caracteres especificados. O
controle RichTextBox normalmente é usado para fornecer manipulação de texto e exibir
recursos semelhantes aos aplicativos de processamento de texto como o Microsoft
Word. Assim como o TextBox controle, o RichTextBox controle pode exibir barras de
rolagem; mas, ao contrário do TextBox controle, ele exibe barras de rolagem horizontal
e vertical por padrão e tem configurações de barra de rolagem adicionais.
Nesta seção
Visão geral do controle RichTextBox
Apresenta os conceitos gerais do controle RichTextBox , que permite aos usuários
inserir, exibir e manipular texto com opções de formatação.
Como: Exibir links em estilo da Web com o controle RichTextBox do Windows Forms
Explica como vincular a sites da Web do controle RichTextBox .
Como: Definir recuos definidos, recuos deslocados e parágrafos com marcadores com o
controle RichTextBox do Windows Forms
Descreve como formatar parágrafos no controle RichTextBox .
Referência
Classe RichTextBox
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Controle TextBox
Apresenta os conceitos gerais do controle, que TextBox permite a entrada editável de
várias linhas do usuário.
Visão geral do controle RichTextBox
(Windows Forms)
Artigo • 21/06/2023
O controle RichTextBox dos Windows Forms é usado para exibir, inserir e manipular
texto com formatação. O RichTextBox controle faz tudo o que o TextBox controle faz,
mas também pode exibir fontes, cores e links; carregar texto e imagens inseridas de um
arquivo e localizar caracteres especificados. O controle RichTextBox normalmente é
usado para fornecer manipulação de texto e exibir recursos semelhantes aos aplicativos
de processamento de texto como o Microsoft Word. Assim como o TextBox controle, o
RichTextBox controle pode exibir barras de rolagem, mas ao contrário do TextBox
controle, sua configuração padrão é exibir barras de rolagem horizontais e verticais
conforme necessário e tem configurações de barra de rolagem adicionais.
Você também pode usar um RichTextBox controle para links de estilo da Web definindo
a DetectUrls propriedade true como e escrevendo código para manipular o LinkClicked
evento. Para obter mais informações, consulte Como exibir links em estilo da Web com
o controle RichTextBox do Windows Forms. Você pode impedir que o usuário manipule
parte ou todo o texto no controle definindo a SelectionProtected propriedade
true como .
C#
Por padrão, o controle Windows Forms RichTextBox exibe barras de rolagem horizontais
e verticais conforme necessário. Há sete valores possíveis para a ScrollBars propriedade
do RichTextBox controle, que são descritos na tabela abaixo.
Valor Descrição
Both (padrão) Exibe barras de rolagem horizontal, vertical ou ambas, mas apenas
quando o texto excede a largura ou o comprimento do controle.
Horizontal Exibe uma barra de rolagem horizontal somente quando o texto excede
a largura do controle. (Para que isso ocorra, a WordWrap propriedade
deve ser definida como false .)
Vertical Exibe uma barra de rolagem vertical somente quando o texto excede a
altura do controle.
ForcedBoth Sempre exibe uma barra de rolagem vertical. Exibe uma barra de
rolagem horizontal quando a WordWrap propriedade é definida como
false . A barra de rolagem aparece esmaecida quando o texto não
excede a largura ou altura do controle.
3. Defina a propriedade WordWrap com um valor apropriado.
Valor DESCRIÇÃO
Confira também
RichTextBoxScrollBars
RichTextBox
Controle RichTextBox
Controles a serem usados nos Windows Forms
Como: Exibir links em estilo da Web
com o controle RichTextBox do
Windows Forms
Artigo • 02/06/2023
O controle Windows Forms RichTextBox pode exibir links da Web como coloridos e
sublinhados. Você pode gravar o código que abre uma janela do navegador mostrando
o site da Web especificado no texto do link quando o link é clicado.
) Importante
C#
(Visual C++) Você deve inicializar o processo p , o que pode ser feito incluindo a
seguinte instrução no construtor do formulário:
C++
p = gcnew System::Diagnostics::Process();
C#
this.richTextBox1.LinkClicked += new
System.Windows.Forms.LinkClickedEventHandler
(this.richTextBox1_LinkClicked);
C#
Confira também
DetectUrls
LinkClicked
RichTextBox
Controle RichTextBox
Controles a serem usados nos Windows Forms
Como: Habilitar operações do tipo
"arrastar e soltar" com o controle
RichTextBox do Windows Forms
Artigo • 21/06/2023
As operações de arrastar e soltar com o controle Windows Forms RichTextBox são feitas
manipulando os DragEnter eventos e DragDrop . Portanto, as operações de arrastar e
soltar são extremamente simples com o RichTextBox controle .
C#
C#
this.richTextBox1.DragEnter += new
System.Windows.Forms.DragEventHandler
(this.richTextBox1_DragEnter);
C#
C#
this.richTextBox1.DragDrop += new
System.Windows.Forms.DragEventHandler
(this.richTextBox1_DragDrop);
2. Após abrir o WordPad, digite uma cadeia de texto nele. Usando o mouse, selecione
o texto e arraste o texto selecionado para o RichTextBox controle em seu aplicativo
do Windows.
Observe que quando você aponta o mouse para o RichTextBox controle (e,
consequentemente, aciona o DragEnter evento), o ponteiro do mouse muda e
você pode soltar o texto selecionado no RichTextBox controle.
Quando você libera o botão do mouse, o texto selecionado é removido (ou seja, o
DragDrop evento é gerado) e é inserido dentro do RichTextBox controle .
Confira também
RichTextBox
Como: executar operações de do tipo "arrastar e soltar" entre aplicativos
Controle RichTextBox
Controles a serem usados nos Windows Forms
Como: Carregar arquivos no controle
RichTextBox do Windows Forms
Artigo • 02/06/2023
O controle Windows Forms RichTextBox pode exibir um texto sem formatação, texto
sem formatação Unicode ou um arquivo RTF (Rich-Text-Format). Para fazer isso, chame
o LoadFile método. Você também pode usar o LoadFile método para carregar dados de
um fluxo. Para obter mais informações, consulte LoadFile(Stream,
RichTextBoxStreamType).
C#
) Importante
Confira também
RichTextBox.LoadFile
RichTextBox
Controle RichTextBox
Controles a serem usados nos Windows Forms
Como: Salvar arquivos com o controle
RichTextBox do Windows Forms
Artigo • 02/06/2023
Para salvar um arquivo, chame o SaveFile método. Você também pode usar o método
SaveFile para salvar dados em um fluxo. Para obter mais informações, consulte
SaveFile(Stream, RichTextBoxStreamType).
) Importante
Confira também
RichTextBox.SaveFile
RichTextBox
Controle RichTextBox
Controles a serem usados nos Windows Forms
Como: Definir atributos de fonte para o
controle RichTextBox do Windows
Forms
Artigo • 02/06/2023
O controle Windows Forms RichTextBox tem várias opções para formatar o texto
exibido. Você pode tornar os caracteres selecionados em negrito, sublinhado ou itálico,
usando a SelectionFont propriedade. Você também pode usar essa propriedade para
alterar o tamanho e a face de tipo dos caracteres selecionados. A SelectionColor
propriedade permite alterar a cor dos caracteres selecionados.
C#
7 Observação
Confira também
RichTextBox
Controle RichTextBox
Controles a serem usados nos Windows Forms
Como: Definir recuos definidos, recuos
deslocados e parágrafos com
marcadores com o controle RichTextBox
do Windows Forms
Artigo • 02/06/2023
O controle Windows Forms RichTextBox tem várias opções para formatar o texto
exibido. Você pode formatar parágrafos selecionados como listas com marcadores
definindo a SelectionBullet propriedade. Você também pode usar o SelectionIndent,
SelectionRightIndente SelectionHangingIndent as propriedades para definir o recuo de
parágrafos em relação às bordas esquerda e direita do controle, e a borda esquerda de
outras linhas de texto.
C#
richTextBox1.SelectionBullet = true;
C#
richTextBox1.SelectionIndent = 8;
richTextBox1.SelectionHangingIndent = 3;
richTextBox1.SelectionRightIndent = 12;
7 Observação
Confira também
RichTextBox
Controle RichTextBox
Controles a serem usados nos Windows Forms
Componente SaveFileDialog (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do componente SaveFileDialog
Apresenta os conceitos gerais do componente, o SaveFileDialog que permite exibir uma
caixa de diálogo pré-configurada que os usuários podem usar para salvar um arquivo
em um local especificado.
Referência
Classe SaveFileDialog
Fornece informações de referência sobre a classe e seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Você pode usar o ShowDialog método para exibir a caixa de diálogo em tempo de
execução. Você pode abrir um arquivo no modo de leitura/gravação usando o OpenFile
método.
Confira também
SaveFileDialog
Componente SaveFileDialog
Como: Salvar arquivos usando o
componente SaveFileDialog
Artigo • 02/06/2023
) Importante
O exemplo presume que seu formulário tem um controle com sua ButtonImage
propriedade definida como um arquivo do tipo .gif, .jpeg ou .bmp.
7 Observação
A FileDialog propriedade da classe FilterIndex (que, devido à herança,
SaveFileDialog faz parte da classe ) usa um índice baseado em um. Isso será
importante se você estiver escrevendo código para salvar dados em um
formato específico (por exemplo, salvar um arquivo como texto sem
formatação em vez de formato binário). Essa propriedade é apresentada no
exemplo abaixo.
C#
case 2 :
this.button2.Image.Save(fs,
System.Drawing.Imaging.ImageFormat.Bmp);
break;
case 3 :
this.button2.Image.Save(fs,
System.Drawing.Imaging.ImageFormat.Gif);
break;
}
fs.Close();
}
}
(Visual C# e Visual C++) Coloque o código a seguir no construtor do formulário
para registrar o manipulador de eventos.
C#
Para obter mais informações sobre como escrever fluxos de arquivos, consulte
BeginWrite e Write.
7 Observação
Confira também
SaveFileDialog
Componente SaveFileDialog
Classe SoundPlayer
Artigo • 02/06/2023
A classe SoundPlayer permite que você inclua facilmente sons em seus aplicativos.
Você também pode usar a SystemSounds classe para reproduzir sons comuns do
sistema, incluindo um bipe.
Nesta seção
Visão geral da classe SoundPlayer
Apresenta a classe e suas propriedades, métodos e eventos mais usados.
Referência
SoundPlayer
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles de Windows Forms
Fornece links para tópicos sobre os controles projetados especificamente para funcionar
com o Windows Forms.
Confira também
Objeto My.Computer
Visão geral da classe SoundPlayer
Artigo • 21/06/2023
A classe SoundPlayer permite que você inclua facilmente sons em seus aplicativos.
Você também pode usar a SystemSounds classe para reproduzir sons comuns do
sistema, incluindo um bipe.
Confira também
SoundPlayer
SystemSounds
Como: Reproduzir um som de um
Windows Form
Artigo • 02/06/2023
Exemplo
C#
Compilando o código
Este exemplo requer:
Programação robusta
As operações de arquivo devem ser colocadas entre os blocos de manipulação de
exceção estruturada apropriados.
Confira também
SoundPlayer
Como: Carregar um som de forma assíncrona dentro de um Windows Form
Como: Reproduzir um aviso sonoro de
um Windows Form
Artigo • 02/06/2023
Exemplo
C#
7 Observação
Compilando o código
Para C#, este exemplo requer uma referência ao System.Media namespace.
Confira também
Beep
SoundPlayer
Como: Reproduzir um som do sistema de um Windows Form
Como: Reproduzir um som de um Windows Form
Como: Reproduzir um som inserido em
um recurso de um Windows Form
Artigo • 02/06/2023
Você pode usar a SoundPlayer classe para reproduzir um som de um recurso inserido.
Exemplo
C#
Compilando o código
Este exemplo requer:
Confira também
SoundPlayer
Como: Reproduzir um som de um Windows Form
Como: Fazer Loop de um Som Tocado em um Formulário do Windows
Como: Reproduzir um som do sistema
de um Windows Form
Artigo • 02/06/2023
Exemplo
C#
Compilando o código
Este exemplo requer:
Confira também
SoundPlayer
SystemSounds
Como: Reproduzir um aviso sonoro de um Windows Form
Como: Reproduzir um som de um Windows Form
Como: Carregar um som de forma
assíncrona dentro de um Windows Form
Artigo • 02/06/2023
Exemplo
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Media;
using System.Windows.Forms;
namespace SoundPlayerLoadAsyncExample
{
public class Form1 : Form
{
private SoundPlayer Player = new SoundPlayer();
public Form1()
{
InitializeComponent();
this.Player.LoadCompleted += new
AsyncCompletedEventHandler(Player_LoadCompleted);
}
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be
disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.playSoundButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// playSoundButton
//
this.playSoundButton.Location = new System.Drawing.Point(106,
112);
this.playSoundButton.Name = "playSoundButton";
this.playSoundButton.Size = new System.Drawing.Size(75, 23);
this.playSoundButton.TabIndex = 0;
this.playSoundButton.Text = "Play Sound";
this.playSoundButton.Click += new
System.EventHandler(this.playSoundButton_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.playSoundButton);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
Compilando o código
Este exemplo requer:
Programação robusta
As operações de arquivo devem ser colocadas em blocos de tratamento de exceção
apropriados.
O nome do caminho está malformado. Por exemplo, ele contém caracteres que
não são válidos ou são apenas espaço em branco (ArgumentException classe).
Confira também
LoadAsync
LoadCompleted
Play
Como: Reproduzir um som de um Windows Form
Como: Fazer Loop de um Som Tocado
em um Formulário do Windows
Artigo • 02/06/2023
Exemplo
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Media;
using System.Windows.Forms;
namespace SoundPlayerPlayLoopingExample
{
public class Form1 : Form
{
private SoundPlayer Player = new SoundPlayer();
public Form1()
{
InitializeComponent();
}
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be
disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.playLoopingButton = new System.Windows.Forms.Button();
this.stopPlayingButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// playLoopingButton
//
this.playLoopingButton.Location = new System.Drawing.Point(12,
12);
this.playLoopingButton.Name = "playLoopingButton";
this.playLoopingButton.Size = new System.Drawing.Size(87, 23);
this.playLoopingButton.TabIndex = 0;
this.playLoopingButton.Text = "Play Looping";
this.playLoopingButton.UseVisualStyleBackColor = true;
this.playLoopingButton.Click += new
System.EventHandler(this.playLoopingButton_Click);
//
// stopPlayingButton
//
this.stopPlayingButton.Location = new System.Drawing.Point(105,
12);
this.stopPlayingButton.Name = "stopPlayingButton";
this.stopPlayingButton.Size = new System.Drawing.Size(75, 23);
this.stopPlayingButton.TabIndex = 1;
this.stopPlayingButton.Text = "Stop";
this.stopPlayingButton.UseVisualStyleBackColor = true;
this.stopPlayingButton.Click += new
System.EventHandler(this.stopPlayingButton_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(195, 51);
this.Controls.Add(this.stopPlayingButton);
this.Controls.Add(this.playLoopingButton);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
Compilando o código
Este exemplo requer:
Programação robusta
As operações de arquivo devem ser colocadas em blocos apropriados de tratamento de
exceções.
As seguintes condições podem causar uma exceção:
O nome do caminho está malformado. Por exemplo, ele contém caracteres que
não são válidos ou que são apenas espaço em branco (ArgumentException classe).
Confira também
PlayLooping
Como: Reproduzir um som de um Windows Form
Visão geral da classe SoundPlayer
Controle SplitContainer (Windows
Forms)
Artigo • 02/06/2023
O controle SplitContainer dos Windows Forms pode ser considerado uma composição;
são dois painéis separados por uma barra móvel. Quando o ponteiro do mouse passa
sobre a barra, ele muda de forma para mostrar que a barra é móvel.
7 Observação
Nesta seção
Visão geral do controle SplitContainer
Apresenta o controle SplitContainer e descreve as propriedades, métodos e eventos
mais usados.
Como: Criar uma Interface do Usuário com Vários Painéis nos Windows Forms
Cria uma interface do usuário em vários painéis que é semelhante à usada no Microsoft
Outlook.
Consulte também Como dividir uma janela horizontalmente usando o Designer, Como
criar uma Interface no estilo Windows Explorer em um Windows Form, Como criar uma
Interface do usuário multipainéis com Windows Forms usando o Designer.
Referência
Classe SplitContainer
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
controles Windows Forms
Fornece links para tópicos sobre os controles projetados especificamente para funcionar
com o Windows Forms.
O controle SplitContainer dos Windows Forms pode ser considerado uma composição;
são dois painéis separados por uma barra móvel. Quando o ponteiro do mouse passa
sobre a barra, ele muda de forma para mostrar que a barra é móvel.
) Importante
7 Observação
Por fim, cada painel do SplitContainer controle tem propriedades para determinar seu
tamanho individual.
Propriedade Determina a distância mínima, em pixels, que o divisor pode ser movido
SplitterIncrement pelo usuário.
Confira também
SplitContainer
Controle SplitContainer
Exemplo do controle SplitContainer
Como: Criar uma Interface do Usuário
com Vários Painéis nos Windows Forms
Artigo • 02/06/2023
Layout de controle
A tabela a seguir descreve como os controles são configurados para imitar o Microsoft
Outlook:
Dock Fill
TabIndex 4
Splitterwidth 4
Splitterdistance 100
Dock Fill
TabIndex 0
Dock Fill
TabIndex 1
Splitterwidth 4
Splitterdistance 150
Orientação Horizontal
Dock Fill
TabIndex 2
Dock Fill
TabIndex 3
Texto richTextBox1
Confira também
SplitContainer
Controle SplitContainer
Como: Criar uma interface do usuário com vários painéis com o Windows Forms
usando o designer
Como: Criar uma interface do usuário
com vários painéis com o Windows
Forms usando o designer
Artigo • 02/06/2023
No procedimento a seguir, você vai criar uma interface do usuário com vários painéis
semelhante à que é usada no Microsoft Outlook, com uma lista Pasta, um painel
Mensagens e um painel Visualização. Essa organização é obtida principalmente por
meio de controles de encaixe com o formulário.
7 Observação
Confira também
SplitContainer
Controle SplitContainer
Como: Criar uma interface no estilo do
Windows Explorer em Windows Forms
Artigo • 02/06/2023
2. Na Caixa de Ferramentas:
7 Observação
Não use o comando Selecionar Tudo no menu Editar. Se você fizer isso, a
propriedade necessária na próxima etapa não aparecerá na janela
Propriedades.
4. Na janela Propriedades , defina a Dock propriedade como Fill.
7 Observação
Confira também
SplitContainer
Como: Criar uma Interface do Usuário com Vários Painéis nos Windows Forms
Como: Definir o comportamento de redimensionamento e posicionamento em
uma janela dividida
Como: Dividir uma janela horizontalmente
Controle SplitContainer
Como: Definir o comportamento de
redimensionamento e posicionamento
em uma janela dividida
Artigo • 21/06/2023
Nome Descrição
C#
C#
Mover o divisor ligeiramente para a esquerda ou direita não terá nenhum efeito;
no entanto, quando o ponteiro do mouse se move em 10 pixels em qualquer
direção, o divisor se ajustará à nova posição.
Confira também
SplitContainer
SplitterIncrement
Como: Dividir uma janela
horizontalmente
Artigo • 02/06/2023
7 Observação
C#
Confira também
SplitContainer
Controle SplitContainer
Como: Dividir uma janela
horizontalmente o designer
Artigo • 02/06/2023
Este exemplo faz com que o divisor que divide o SplitContainer controle horizontal.
7 Observação
Confira também
SplitContainer
Controle SplitContainer
Controle de separador (Windows Forms)
Artigo • 02/06/2023
7 Observação
Nesta seção
Visão geral do controle Divisor
Explica o que é esse controle e seus principais recursos e propriedades.
Referência
Classe Splitter
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle divisor
(Windows Forms)
Artigo • 02/06/2023
) Importante
Splitter Windows Forms controles são usados para redimensionar controles encaixados
em tempo de execução. O Splitter controle geralmente é usado em formulários com
controles que têm diferentes comprimentos de dados para apresentar, como o
Windows Explorer, cujos painéis de dados contêm informações de larguras variadas em
momentos diferentes.
Confira também
SplitContainer
Como encaixar controles no Windows Forms
Controles a serem usados nos Windows Forms
Controle StatusBar (Windows Forms)
Artigo • 02/06/2023
7 Observação
Nesta seção
Visão geral do controle StatusBar
Apresenta os conceitos gerais do controle, que StatusBar permite que os usuários vejam
informações relevantes para o controle que tem foco.
Como: Determinar qual painel no controle StatusBar do Windows Forms foi clicado
Explica como lidar com Click eventos gerados do StatusBar controle.
Referência
StatusBar
Fornece informações de referência sobre a classe e seus membros.
ToolStripStatusLabel
Substitui e adiciona funcionalidade ao StatusBar controle.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle StatusBar
(Windows Forms)
Artigo • 02/06/2023
) Importante
O Controle StatusBar dos Windows Forms é usado em formulários como uma área,
normalmente exibido na parte inferior de uma janela, na qual um aplicativo pode exibir
diversos tipos de informações de status. StatusBar os controles podem ter painéis de
barras de status neles que exibem texto ou ícones para indicar o estado ou uma série de
ícones em uma animação que indicam que um processo está funcionando; por exemplo,
Microsoft Word indicando que o documento está sendo salvo.
Você pode exibir uma única mensagem na barra de status definindo a ShowPanels
propriedade como false (o padrão) e definindo a Text propriedade da barra de status
como o texto que você deseja exibir na barra de status. Você pode dividir a barra de
status em painéis para exibir mais de um tipo de informação definindo a ShowPanels
propriedade true como e usando o Add método de StatusBar.StatusBarPanelCollection.
Confira também
StatusBar
ToolStripStatusLabel
Como: Determinar qual painel no controle StatusBar do Windows Forms foi clicado
Como: Adicionar painéis a um controle
StatusBar
Artigo • 02/06/2023
) Importante
7 Observação
C#
Confira também
StatusBar
ToolStripStatusLabel
Caixa de diálogo Editor de Coleção
Como: Definir o tamanho de painéis da barra de status
Passo a passo: Atualizando informações da barra de status em tempo de execução
Como: Determinar qual painel no controle StatusBar do Windows Forms foi clicado
Visão geral do controle StatusBar
Como: Determinar qual painel no
controle StatusBar do Windows Forms
foi clicado
Artigo • 21/06/2023
) Importante
Para programar o controle StatusBar Control para responder a cliques do usuário, use
uma instrução case dentro do PanelClick evento. O evento contém um argumento (o
argumento panel), que contém uma referência ao clicado StatusBarPanel. Usando essa
referência, determine o índice do painel clicado e programe adequadamente.
7 Observação
C#
C#
this.statusBar1.PanelClick += new
System.Windows.Forms.StatusBarPanelClickEventHandler
(this.statusBar1_PanelClick);
Confira também
StatusBar
ToolStripStatusLabel
Como: Definir o tamanho de painéis da barra de status
Passo a passo: Atualizando informações da barra de status em tempo de execução
Visão geral do controle StatusBar
Como: Definir o tamanho de painéis da
barra de status
Artigo • 02/06/2023
7 Observação
C#
Confira também
StatusBar
ToolStripStatusLabel
Passo a passo: Atualizando informações da barra de status em tempo de execução
Como: Determinar qual painel no controle StatusBar do Windows Forms foi clicado
Visão geral do controle StatusBar
Passo a passo: Atualizando informações
da barra de status em tempo de
execução
Artigo • 02/06/2023
) Importante
Geralmente, um programa solicitará que você atualize o conteúdo dos painéis da barra
de status dinamicamente no tempo de execução, dependendo das alterações de estado
do aplicativo ou outra interação do usuário. Essa é uma maneira comum de indicar aos
usuários que teclas como CAPS LOCK, NUM LOCK ou SCROLL LOCK estão habilitadas ou
de fornecer uma data ou um relógio como uma referência conveniente.
No exemplo a seguir, você usará uma instância da StatusBarPanel classe para hospedar
um relógio.
2. Adicione um controle StatusBar ao seu formulário. Para ver mais detalhes, consulte
Como adicionar controles ao Windows Forms.
3. Adicione um painel de barras de status ao seu StatusBar controle. Para ver mais
detalhes, consulte Como adicionar painéis a um controle StatusBar.
7 Observação
O componente Windows Forms System.Windows.Forms.Timer foi projetado
para um ambiente de Windows Forms. Se você precisar de um temporizador
que seja adequado para um ambiente de servidor, consulte Introdução a
temporizadores baseados em servidor.
7 Observação
C#
Neste ponto, você está pronto para executar o aplicativo e observar o relógio em
execução no painel da barra de status.
7 Observação
Confira também
StatusBar
ToolStripStatusLabel
Como: Adicionar painéis a um controle StatusBar
Como: Determinar qual painel no controle StatusBar do Windows Forms foi clicado
Visão geral do controle StatusBar
Controle StatusStrip
Artigo • 02/06/2023
Nesta seção
Visão geral do controle StatusStrip
Explica o que é esse controle e seus principais recursos e propriedades.
Referência
StatusStrip
Fornece informações de referência sobre a classe e seus membros.
ToolStripStatusLabel
Fornece informações de referência sobre a classe e seus membros.
Confira também
Controles a serem usados nos Windows Forms
Visão geral do controle StatusStrip
Artigo • 02/06/2023
Um StatusStrip controle exibe informações sobre um objeto que está sendo exibido em
um Formcomponente do objeto ou informações contextuais relacionadas à operação
desse objeto em seu aplicativo. Normalmente, um controle consiste em
ToolStripStatusLabel objetos, cada um StatusStrip deles exibe texto, um ícone ou ambos.
O StatusStrip também pode conter ToolStripDropDownButton, ToolStripSplitButtone
ToolStripProgressBar controles.
O padrão StatusStrip não tem painéis. Para adicionar painéis a um StatusStrip, use o
ToolStripItemCollection.AddRange método.
Nome Descrição
Stretch Obtém ou define um valor que indica se o StatusStrip trecho se estende de ponta
a ponta em seu ToolStripContainer.
Nome Descrição
Confira também
StatusStrip
ToolStripStatusLabel
Spring
Como: Usar a propriedade Spring de
forma interativa em um StatusStrip
Artigo • 21/06/2023
Exemplo
O exemplo de código a seguir demonstra como usar a Spring propriedade para
posicionar um ToolStripStatusLabel controle em um StatusStrip controle . O Click
manipulador de eventos executa uma operação exclusiva ou (XOR) para alternar o valor
da Spring propriedade.
Para usar esse exemplo de código, compile e execute o aplicativo e clique em Meio
(Spring) no StatusStrip controle para alternar o valor da Spring propriedade.
C#
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
C#
public Form4()
{
// Create a new StatusStrip control.
StatusStrip ss = new StatusStrip();
Compilando o código
Este exemplo requer:
Confira também
ToolStripStatusLabel
StatusStrip
ToolStrip
ToolStripItem
ToolStripMenuItem
Controle ToolStrip
Controle TabControl (Windows Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do controle TabControl
Explica o que é esse controle e seus principais recursos e propriedades.
Veja também como adicionar e remover guias com o Windows Forms TabControl
usando o designer, como adicionar um controle a uma página tab usando o designer
Referência
Classe TabControl
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Caixas de diálogo no Windows Forms
Fornece uma lista de tarefas para caixas de diálogo, que geralmente exibem guias.
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle TabControl
(Windows Forms)
Artigo • 21/06/2023
Confira também
TabControl
Controle TabControl
Como: Alterar a aparência do TabControl do Windows Forms
Como: Adicionar um controle a uma página da guia
Como: Adicionar e remover guias com o controle TabControl do Windows Forms
Como: Desabilitar páginas de guia
Caixas de diálogo no Windows Forms
Como: Adicionar um controle a uma
página da guia
Artigo • 02/06/2023
Você pode usar o Windows Forms TabControl para exibir outros controles de forma
organizada. O procedimento a seguir mostra como adicionar um botão à primeira guia.
Para obter informações sobre como adicionar um ícone à parte de rótulo de uma página
de guia, consulte Como alterar a aparência do Windows Forms TabControl.
C#
tabPage1.Controls.Add(new Button());
Confira também
Controle TabControl
Visão geral do controle TabControl
Como: Alterar a aparência do TabControl do Windows Forms
Como: Desabilitar páginas de guia
Como: Adicionar e remover guias com o controle TabControl do Windows Forms
Como: Adicionar um controle a uma
página de guia usando o Designer
Artigo • 02/06/2023
Confira também
Controle TabControl
Visão geral do controle TabControl
Como: Alterar a aparência do TabControl do Windows Forms
Como: Desabilitar páginas de guia
Como: Adicionar e remover guias com o controle TabControl do Windows Forms
Como: Adicionar e remover guias com o
controle TabControl do Windows Forms
Artigo • 02/06/2023
Por padrão, um controle TabControl contém dois controles TabPage . Você pode acessar
essas guias por meio da TabPages propriedade .
C#
-ou-
C#
Confira também
Visão geral do controle TabControl
Como: Adicionar um controle a uma página da guia
Como: Desabilitar páginas de guia
Como: Alterar a aparência do TabControl do Windows Forms
Como: Adicionar e remover guias com o
TabControl do Windows Forms usando
o designer
Artigo • 02/06/2023
Quando você coloca um TabControl controle em seu formulário, ele contém duas guias
por padrão. Você pode adicionar ou remover guias usando o designer.
-ou-
Confira também
Controle TabControl
Visão geral do controle TabControl
Como: Adicionar um controle a uma página da guia
Como: Desabilitar páginas de guia
Como: Alterar a aparência do TabControl do Windows Forms
Como: Alterar a aparência do
TabControl do Windows Forms
Artigo • 02/06/2023
Você pode alterar a aparência das guias em Windows Forms usando propriedades
TabControl do e dos TabPage objetos que compõem as guias individuais no controle. Ao
configurar essas propriedades, é possível exibir imagens em guias, exibir guias
verticalmente em vez de horizontalmente, exibir várias linhas de guias e habilitar ou
desabilitar guias com programação.
C#
tabPage1.Enabled = false;
Confira também
Controle TabControl
Visão geral do controle TabControl
Como: Adicionar um controle a uma página da guia
Como: Desabilitar páginas de guia
Como: Adicionar e remover guias com o controle TabControl do Windows Forms
Como: Desabilitar páginas de guia
Artigo • 21/06/2023
Em algumas ocasiões, pode ser útil restringir o acesso aos dados que estão disponíveis
no seu Aplicativo do Windows Forms. Um exemplo disso seria quando você tem dados
exibidos nas páginas da guia de um controle guia. Os administradores poderiam ter
informações em uma página da guia que você gostaria de proibir para convidados ou
usuários de nível inferior.
7 Observação
4. Opcionalmente, se você tiver mais de duas páginas da guia, exiba uma página da
guia diferente da original.
exibida. Caso contrário, TabPage3 será exibido e uma caixa de mensagem será
exibida para o usuário, indicando que ele não tem os privilégios de acesso
apropriados. O código a seguir pressupõe um formulário com um CheckBox
controle ( CredentialCheck ) e um TabControl controle com três páginas guias.
C#
C#
this.tabControl1.SelectedIndexChanged +=
new System.EventHandler(this.tabControl1_SelectedIndexChanged);
Confira também
Visão geral do controle TabControl
Como: Adicionar um controle a uma página da guia
Como: Adicionar e remover guias com o controle TabControl do Windows Forms
Como: Alterar a aparência do TabControl do Windows Forms
Como: Exibir guias alinhadas
lateralmente com TabControl
Artigo • 21/06/2023
O procedimento a seguir mostra como renderizar guias alinhadas à direita, com o texto
da guia indo da esquerda para a direita, usando o recurso de “desenho do proprietário”.
4. Defina a ItemSize propriedade como o tamanho fixo preferido para as guias. Tenha
em mente que a ItemSize propriedade se comporta como se as guias estivessem
na parte superior, embora estejam alinhadas à direita. Como resultado, para
aumentar as guias, você deve alterar a Height propriedade e, para torná-las mais
altas, você deve alterar a Width propriedade.
Para obter o melhor resultado com o exemplo de código abaixo, defina o Width
das guias como 25 e o Height como 100.
C#
public Form1()
{
// Remove this call if you do not program using Visual Studio.
InitializeComponent();
tabControl1.DrawItem += new
DrawItemEventHandler(tabControl1_DrawItem);
}
if (e.State == DrawItemState.Selected)
{
Confira também
Controle TabControl
Controle TableLayoutPanel (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do controle TableLayoutPanel
Apresenta os conceitos gerais do controle, que TableLayoutPanel permite criar um
layout com linhas e colunas.
Como criar um layout dos Windows Forms que responda bem à localização
Demonstra o uso de um TableLayoutPanel controle para criar um formulário que
responde bem à localização.
Referência
TableLayoutPanel
Fornece a documentação de referência para o TableLayoutPanel controle.
TableLayoutSettings
Fornece a documentação de referência para o TableLayoutSettings tipo.
FlowLayoutPanel
Fornece a documentação de referência para o FlowLayoutPanel controle.
Seções relacionadas
Localização
Fornece uma visão geral dos tópicos relacionados à localização.
Você também pode controlar a direção da expansão (horizontal ou vertical) depois que
o TableLayoutPanel controle estiver cheio de controles filho. Por padrão, o
TableLayoutPanel controle se expande para baixo adicionando linhas.
Confira também
FlowLayoutPanel
TableLayoutSettings
Como criar um layout dos Windows Forms que responda bem à localização
Como criar um Windows Form redimensionável para entrada de dados
Práticas recomendadas para o controle TableLayoutPanel
Comportamento de AutoSize no
controle TableLayoutPanel
Artigo • 02/06/2023
Confira também
TableLayoutPanel
Visão geral do controle TableLayoutPanel
Práticas recomendadas para o controle
TableLayoutPanel
Artigo • 02/06/2023
Recomendações
As recomendações a seguir ajudarão você a usar o TableLayoutPanel controle para sua
melhor vantagem.
Uso direcionado
Use o TableLayoutPanel controle com moderação. Você não deve usá-lo em todas as
situações que exigem um layout redimensionável. A lista a seguir descreve layouts que
mais se beneficiam do uso do TableLayoutPanel controle:
Layouts que devem permanecer em um tamanho fixo geral. Por exemplo, você
pode ter uma caixa de diálogo que deve permanecer menor do que 800 x 600,
mas você precisa dar suporte a cadeias de caracteres localizadas.
Formulários de entrada de dados simples com uma única coluna de rótulos e uma
única coluna de áreas de entrada de texto.
Formulários com uma única área de exibição grande que deve preencher o espaço
disponível quando ocorre um redimensionamento. Um exemplo disso é um
formulário que exibe um único PropertyGrid controle. Nesse caso, use ancoragem,
pois nada mais deve expandir quando o formulário é redimensionado.
Escolha cuidadosamente quais controles precisam estar em um TableLayoutPanel
controle. Se você tiver espaço para seu texto crescer 30% usando ancoragem, considere
usar apenas a Anchor propriedade. Se você puder estimar o espaço exigido pelo layout,
use Dock e Anchor seja mais fácil do que estimar os detalhes do espaço e AutoSize do
comportamento restantes.
Evitar aninhamento
Evite aninhar outros TableLayoutPanel controles dentro de um TableLayoutPanel
controle. Pode ser difícil depurar layouts aninhados.
Confira também
TableLayoutPanel
FlowLayoutPanel
Como: Alinhar e alongar um controle
em um controle TableLayoutPanel
Artigo • 02/06/2023
Confira também
Controle TableLayoutPanel
Como ancorar e encaixar controles filho
em um controle TableLayoutPanel
Artigo • 02/06/2023
7 Observação
5. Altere o valor da propriedade Button do controle Anchor para Top, Left . O Button
controle se move para ocupar o canto superior esquerdo da célula.
6. Repita a etapa 5 com um valor de Top, Right mover o Button controle para o
canto superior direito da célula. Repita com valores de Bottom, Left e Bottom,
Right .
7 Observação
3. Altere o valor da propriedade Button do controle Anchor para Top, Bottom, Left,
Right . O Button controle é redimensionado para preencher a célula.
7 Observação
6. Altere o valor da propriedade Button do controle Dock para Fill. O Button controle
é redimensionado para preencher a célula.
Exemplo
A ilustração a seguir mostra cinco botões ancorados em cinco células separadas
TableLayoutPanel .
A ilustração a seguir mostra quatro botões ancorados nos cantos de quatro células
separadas TableLayoutPanel .
A ilustração a seguir mostra três botões estendidos por ancoragem em três células
separadas TableLayoutPanel .
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Compilando o código
Este exemplo requer:
Referências aos assemblies System, System.Data, System.Drawing e
System.Windows.Forms.
Confira também
TableLayoutPanel
Controle TableLayoutPanel
Como criar um Windows Form
redimensionável para entrada de dados
Artigo • 02/06/2023
Um bom layout responde bem a alterações nas dimensões de seu formulário pai. Você
pode usar o TableLayoutPanel controle para organizar o layout do formulário para
redimensionar e posicionar seus controles de forma consistente à medida que as
dimensões do formulário mudam. O TableLayoutPanel controle também é útil quando
alterações no conteúdo de seus controles causam alterações no layout. O processo
abordado neste procedimento pode ser realizado no ambiente do Visual Studio.
Consulte também Instruções passo a passo: criando um Windows Form redimensionável
para entrada de dados.
Exemplo
O exemplo a seguir demonstra como usar um TableLayoutPanel controle para criar um
layout que responde bem quando o usuário redimensiona o formulário. Ele também
demonstra um layout que responde bem à localização.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
// This form demonstrates how to build a form layout that adjusts well
// when the user resizes the form. It also demonstrates a layout that
// responds well to localization.
class BasicDataEntryForm : System.Windows.Forms.Form
{
public BasicDataEntryForm()
{
InitializeComponent();
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new BasicDataEntryForm());
}
}
Compilando o código
Este exemplo requer:
Confira também
FlowLayoutPanel
TableLayoutPanel
Como ancorar e encaixar controles filho em um controle TableLayoutPanel
Como criar um layout dos Windows Forms que responda bem à localização
Como criar um layout dos Windows
Forms que responda bem à localização
Artigo • 02/06/2023
Criar formulários prontos para serem localizados acelera muito o desenvolvimento para
os mercados internacionais. Você pode usar o TableLayoutPanel controle para
implementar layouts que respondem normalmente como controles redimensionam
devido a alterações em seus Text valores de propriedade.
Exemplo
Esse formulário demonstra como criar um layout que se ajusta proporcionalmente
quando você converte valores de cadeia de caracteres exibidos em outras linguagens.
Esse processo de tradução é chamado de localização. Para obter mais informações,
confira Localização.
Há um suporte abrangente para esta tarefa no Visual Studio. Veja também passo a
passo: criando um layout que ajusta a proporção para localização.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace TableLayoutPanelSample
{
public class LocalizableForm : Form
{
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.Button button4;
private System.Windows.Forms.Button button5;
private System.Windows.Forms.Button button6;
private System.Windows.Forms.Label label1;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new LocalizableForm());
}
}
}
Recursos adicionais
1. Como alinhar e alongar um controle em um controle TableLayoutPanel
2. Passo a passo: Organizando controles nos Windows Forms utilizando um
FlowLayoutPanel
8. Como dar suporte à localização nos Windows Forms usando AutoSize e o controle
TableLayoutPanel
Compilando o código
Este exemplo requer:
Confira também
TableLayoutPanel
FlowLayoutPanel
Localização
Como: Editar colunas e linhas em um
controle TableLayoutPanel
Artigo • 27/09/2022
7 Observação
5. Clique no botão Adicionar para adicionar uma linha ou coluna ao final da linha
Membro.
6. Clique no botão Inserir para adicionar uma linha ou coluna antes do item
atualmente selecionado na lista.
7. Se você estiver adicionando uma linha ou coluna, selecione o Tipo de tamanho
para a nova linha ou coluna. Para obter mais informações, consulte SizeType.
8. Para remover uma linha ou coluna, clique no botão Remover para excluir o item
selecionado no momento na lista Membro.
Confira também
SizeType
Controle TableLayoutPanel
Como: Abranger linhas e colunas em um
controle TableLayoutPanel
Artigo • 02/06/2023
Confira também
Controle TableLayoutPanel
Passo a passo: Organizar controles nos
Windows Forms usando um
TableLayoutPanel
Artigo • 02/06/2023
Criando o Projeto
A primeira etapa é criar o projeto e configurar o formulário.
6. Mova a alça de dimensionamento horizontal para cima e para baixo para ver o
efeito sobre os controles no painel.
Trocando controles
O TableLayoutPanel controle permite que você troque os controles que ocupam duas
células diferentes.
Próximas etapas
Você pode obter um layout complexo usando uma combinação de controles e painéis
de layout. Sugestões para exploração adicional incluem:
Confira também
FlowLayoutPanel
TableLayoutPanel
Passo a passo: Organizando controles nos Windows Forms utilizando um
FlowLayoutPanel
Instruções passo a passo: organizando controles no Windows Forms usando guias
de alinhamento
Passo a passo: criando um Windows Form redimensionável para entrada de dados
Passo a passo: criando um Windows Form localizável
Práticas recomendadas para o controle TableLayoutPanel
Visão geral da propriedade AutoSize
Como encaixar controles no Windows Forms
Como ancorar controles no Windows Forms
Passo a passo: Definir o layout de controles do Windows Forms com
preenchimento, margens e a propriedade AutoSize
Controle TextBox (Windows Forms)
Artigo • 02/06/2023
Caixas de texto dos Windows Forms são usadas para obter entradas do usuário ou para
exibir texto. O controle TextBox geralmente é usado para texto editável, embora
também possa ser tornado somente leitura. Caixas de texto podem exibir várias linhas,
quebrar o texto para o tamanho do controle e adicionar formatação básica. O controle
TextBox permite um único formato de texto exibido ou inserido no controle.
Nesta seção
Visão geral do controle TextBox
Explica o que é esse controle e seus principais recursos e propriedades.
Como: Criar uma caixa de texto de senha com o controle TextBox do Windows Forms
Explica como ocultar o que for digitado em uma caixa de texto.
Referência
Classe TextBox
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle TextBox
(Windows Forms)
Artigo • 02/06/2023
Caixas de texto dos Windows Forms são usadas para obter entradas do usuário ou para
exibir texto. O controle TextBox geralmente é usado para texto editável, embora
também possa ser tornado somente leitura. Caixas de texto podem exibir várias linhas,
quebrar o texto para o tamanho do controle e adicionar formatação básica. O TextBox
controle fornece um estilo de formato único para texto exibido ou inserido no controle.
Para exibir vários tipos de texto formatado, use o RichTextBox controle. Para obter mais
informações, consulte Visão geral do controle RichTextBox.
C#
Confira também
TextBox
Como: Controlar o ponto de inserção em um controle TextBox do Windows Forms
Como: Criar uma caixa de texto de senha com o controle TextBox do Windows
Forms
Como: Criar uma caixa de texto somente leitura
Como: Inserir aspas em uma cadeia de caracteres
Como: Selecionar texto no controle TextBox do Windows Forms
Como: Exibir várias linhas no controle TextBox do Windows Forms
Controle TextBox
Como: Controlar o ponto de inserção
em um controle TextBox do Windows
Forms
Artigo • 02/06/2023
Quando um controle Windows Forms TextBox recebe o foco pela primeira vez, a
inserção padrão dentro da caixa de texto é à esquerda de qualquer texto existente. O
usuário pode mover o ponto de inserção com o teclado ou o mouse. Se a caixa de texto
perder e recuperar o foco, o ponto de inserção será sempre o ponto em que o usuário o
colocou por último.
C#
Confira também
TextBox
Visão geral do controle TextBox
Como: Criar uma caixa de texto de senha com o controle TextBox do Windows
Forms
Como: Criar uma caixa de texto somente leitura
Como: Inserir aspas em uma cadeia de caracteres
Como: Selecionar texto no controle TextBox do Windows Forms
Como: Exibir várias linhas no controle TextBox do Windows Forms
Controle TextBox
Como: Criar uma caixa de texto de
senha com o controle TextBox do
Windows Forms
Artigo • 02/06/2023
Uma caixa de senha é uma caixa de texto do Windows Forms que exibe caracteres de
espaço reservado enquanto um usuário digita uma cadeia de caracteres.
O exemplo de código a seguir mostra como inicializar uma caixa de texto que
aceita uma cadeia de até 14 caracteres e exibir os asteriscos no lugar da cadeia de
caracteres. O InitializeMyControl procedimento não será executado
automaticamente; ele deve ser chamado.
) Importante
C#
Confira também
TextBox
Visão geral do controle TextBox
Como: Controlar o ponto de inserção em um controle TextBox do Windows Forms
Como: Criar uma caixa de texto somente leitura
Como: Inserir aspas em uma cadeia de caracteres
Como: Selecionar texto no controle TextBox do Windows Forms
Como: Exibir várias linhas no controle TextBox do Windows Forms
Controle TextBox
Como criar uma caixa de texto somente
leitura (Windows Forms)
Artigo • 02/06/2023
você pode transformar uma caixa de texto Windows Forms editável em um controle
somente leitura. Por exemplo, a caixa de texto pode exibir um valor que geralmente é
editado, mas pode não estar no momento, devido ao estado do aplicativo.
7 Observação
Confira também
TextBox
Visão geral do controle TextBox
Como: Controlar o ponto de inserção em um controle TextBox do Windows Forms
Como: Criar uma caixa de texto de senha com o controle TextBox do Windows
Forms
Como: Inserir aspas em uma cadeia de caracteres
Como: Selecionar texto no controle TextBox do Windows Forms
Como: Exibir várias linhas no controle TextBox do Windows Forms
Controle TextBox
Como inserir aspas em uma cadeia de
caracteres (Windows Forms)
Artigo • 21/06/2023
Às vezes, você pode querer colocar aspas (" ") em uma cadeia de caracteres de texto.
Por exemplo:
Como alternativa, você também pode usar o Quote campo como uma constante.
C#
-ou-
2. Insira o caractere ASCII ou Unicode para aspas. No Visual Basic, use o caractere
ASCII (34). No Visual C#, use o caractere Unicode (\u0022).
C#
7 Observação
Neste exemplo, não é possível usar \u0022 porque você não pode usar um
nome de caractere universal que designa um caractere no conjunto de
caracteres básicos. Caso contrário, você produz C3851. Para obter mais
informações, consulte Erro do compilador C3851.
-ou-
3. Você também pode definir uma constante para o caractere e usá-la quando
necessário.
C#
Confira também
TextBox
Quote
Visão geral do controle TextBox
Como: Controlar o ponto de inserção em um controle TextBox do Windows Forms
Como: Criar uma caixa de texto de senha com o controle TextBox do Windows
Forms
Como: Criar uma caixa de texto somente leitura
Como: Selecionar texto no controle TextBox do Windows Forms
Como: Exibir várias linhas no controle TextBox do Windows Forms
Controle TextBox
Como: Selecionar texto no controle
TextBox do Windows Forms
Artigo • 21/06/2023
Para testar esse exemplo, pressione a tecla Tab até que a caixa de texto receber o
foco. Se você clicar na caixa de texto, a seleção dele será cancelada.
C#
Confira também
TextBox
Visão geral do controle TextBox
Como: Controlar o ponto de inserção em um controle TextBox do Windows Forms
Como: Criar uma caixa de texto de senha com o controle TextBox do Windows
Forms
Como: Criar uma caixa de texto somente leitura
Como: Inserir aspas em uma cadeia de caracteres
Como: Exibir várias linhas no controle TextBox do Windows Forms
Controle TextBox
Como: Exibir várias linhas no controle
TextBox do Windows Forms
Artigo • 02/06/2023
por padrão, o controle de Windows Forms TextBox exibe uma única linha de texto e não
exibe barras de rolagem. Se o texto for maior que o espaço disponível, apenas parte do
texto ficará visível. Você pode alterar esse comportamento padrão definindo as Multiline
Propriedades, WordWrap e ScrollBars com os valores apropriados.
Valor Descrição
None Use esse valor se o texto será um parágrafo que quase sempre se ajusta ao
controle. O usuário poderá usar o ponteiro do mouse para mover-se dentro
do controle se o texto for grande demais para ser exibido totalmente ao
mesmo tempo.
Horizontal Use esse valor se desejar exibir uma lista de linhas, algumas das quais podem
ser maiores que a largura do TextBox controle.
Both Use esse valor se a lista pode ser maior que a altura do controle.
Valor Descrição
Valor Descrição
false O texto no controle não será encapsulado automaticamente, portanto ele rolará
para a direita até atingir uma quebra de linha. Use esse valor se você escolher
Horizontal barras de rolagem ou Both , acima.
true A barra de rolagem horizontal não será exibida. Use esse valor se você escolher
(padrão) Vertical barras de rolagem ou None , acima, para exibir um ou mais parágrafos.
Confira também
TextBox
Visão geral do controle TextBox
Como: Controlar o ponto de inserção em um controle TextBox do Windows Forms
Como: Criar uma caixa de texto de senha com o controle TextBox do Windows
Forms
Como: Criar uma caixa de texto somente leitura
Como: Inserir aspas em uma cadeia de caracteres
Como: Selecionar texto no controle TextBox do Windows Forms
Controle TextBox
Componente Temporizador (Windows
Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do componente de temporizador
Apresenta os conceitos gerais do componente, que Timer permite que você configure
seu aplicativo para responder a eventos periódicos.
Referência
Classe System.Windows.Forms.Timer
Fornece informações de referência sobre a classe, usadas para Windows Forms
temporizadores e seus membros.
Classe System.Timers.Timer
Fornece informações de referência sobre a System.Timers.Timer classe usada por
temporizadores baseados em servidor.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do componente de
temporizador (Windows Forms)
Artigo • 21/06/2023
Confira também
Timer
Componente de Temporizador
Limitações da propriedade de intervalo do componente de temporizador dos
Windows Forms
Limitações da propriedade de intervalo
do componente de temporizador dos
Windows Forms
Artigo • 21/06/2023
O componente Windows Forms Timer tem uma Interval propriedade que especifica o
número de milissegundos que passam entre um evento de temporizador e o próximo. A
menos que o componente esteja desabilitado, um temporizador continuará recebendo
o Tick evento em intervalos aproximadamente iguais de tempo.
Esse componente foi projetado para um ambiente do Windows Forms. Se você precisar
de um temporizador que seja adequado para um ambiente de servidor, consulte
Introdução a temporizadores baseados em servidor.
A propriedade Interval
A Interval propriedade tem algumas limitações a serem consideradas ao programar um
Timer componente:
Confira também
Timer
Componente de Temporizador
Visão geral do componente de temporizador
Como: Executar procedimentos em
intervalos definidos com o componente
de temporizador do Windows Forms
Artigo • 21/06/2023
Às vezes, pode ser útil criar um procedimento que é executado em intervalos de tempo
específicos até que um loop termine ou que seja executado quando um determinado
período tiver decorrido. O Timer componente possibilita esse procedimento.
Esse componente foi projetado para um ambiente do Windows Forms. Se você precisar
de um temporizador que seja adequado para um ambiente de servidor, consulte
Introdução a temporizadores baseados em servidor.
7 Observação
7 Observação
C#
// Enable timer.
Timer1.Enabled = true;
Button1.Text = "Stop";
Button1.Click += new EventHandler(Button1_Click);
}
C#
7 Observação
O controle ToolBar dos Windows Forms é usado em formulários como uma barra de
controle que exibe uma linha de menus suspensos e botões de bitmap que ativam
comandos. Portanto, clicar em um botão de barra de ferramentas é equivalente a
escolher um comando de menu. Os botões podem ser configurados para parecer e se
comportar como botões de push, menus suspensos ou separadores. Normalmente, uma
barra de ferramentas contém botões e menus que correspondem aos itens na estrutura
do menu do aplicativo, fornecendo acesso rápido às funções e comandos do aplicativo
usados com mais frequência.
7 Observação
Nesta seção
Visão geral do controle ToolBar
Apresenta os conceitos gerais do controle ToolBar , o que permite a criação de barras
de ferramentas personalizadas com que seus usuários podem trabalhar.
Referência
Classe ToolBar
Fornece informações de referência sobre a classe e seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Controle ToolStrip
Descreve as barras de ferramentas que podem hospedar menus, controles e controles
de usuário em aplicativos dos Windows Forms.
Visão geral do controle ToolBar
(Windows Forms)
Artigo • 21/06/2023
7 Observação
O controle ToolBar dos Windows Forms é usado em formulários como uma barra de
controle que exibe uma linha de menus suspensos e botões de bitmap que ativam
comandos. Portanto, clicar em um botão de barra de ferramentas pode ser equivalente
a escolher um comando de menu. Os botões podem ser configurados para parecerem e
se comportarem como botões de pressão, menus suspensos ou separadores.
Normalmente, uma barra de ferramentas contém botões e menus que correspondem
aos itens na estrutura do menu do aplicativo, fornecendo acesso rápido às funções e
comandos do aplicativo usados com mais frequência.
7 Observação
O ToolBar controle permite que você crie barras de ferramentas adicionando Button
objetos a uma Buttons coleção. Você pode usar o Editor de Coleção para adicionar
botões a um ToolBar controle; cada Button objeto deve ter texto ou uma imagem
atribuída, embora você possa atribuir ambos. A imagem é fornecida por um
componente ImageList associado. Em tempo de execução, você pode adicionar ou
remover botões do ToolBar.ToolBarButtonCollection usando os Add métodos e Remove
. Para programar os botões de um ToolBar, adicione código aos ButtonClick eventos do
ToolBar, usando a Button propriedade da ToolBarButtonClickEventArgs classe para
determinar qual botão foi clicado.
Confira também
ToolBar
Controle ToolBar
Como: Adicionar botões a um controle ToolBar
Como: Definir um ícone para um botão de barra de ferramentas
Como: Disparar eventos de menu para botões da barra de ferramentas
Como: Adicionar botões a um controle
ToolBar
Artigo • 02/06/2023
7 Observação
Uma parte integral do ToolBar controle são os botões que você adiciona a ele. Eles
podem ser usados para fornecer acesso fácil aos comandos de menu ou, como
alternativa, podem ser colocados em outra área da interface do usuário do seu
aplicativo para expor comandos para os usuários que não estão disponíveis na estrutura
do menu.
7 Observação
C#
toolBar1.Buttons[3].DropDownMenu = cm;
// Set the PushButton's Pushed property.
toolBar1.Buttons[0].Pushed = true;
// Set the ToolTipText property of 1 of the buttons.
toolBar1.Buttons[1].ToolTipText = "Button 2";
}
Confira também
ToolBar
Como: Definir um ícone para um botão de barra de ferramentas
Como: Disparar eventos de menu para botões da barra de ferramentas
Visão geral do controle ToolBar
Controle ToolBar
Como: Adicionar botões a um controle
ToolBar usando o designer
Artigo • 02/06/2023
7 Observação
Uma parte integral do ToolBar controle são os botões que você adiciona a ele. Eles
podem ser usados para fornecer acesso fácil aos comandos de menu ou, como
alternativa, podem ser colocados em outra área da interface do usuário do seu
aplicativo para expor comandos para os usuários que não estão disponíveis na estrutura
do menu.
Propriedade Descrição
Confira também
ToolBar
Como: Definir um ícone para um botão de barra de ferramentas
Como: Disparar eventos de menu para botões da barra de ferramentas
Visão geral do controle ToolBar
Controle ToolBar
Como: Definir um ícone para um botão
de barra de ferramentas
Artigo • 02/06/2023
7 Observação
ToolBar os botões são capazes de exibir ícones dentro deles para facilitar a identificação
dos usuários. Isso é obtido por meio da adição de imagens ao componente ImageList
Component e, em seguida, associando o ImageList componente ao ToolBar controle.
Seguindo as etapas acima, você deve ter escrito um código semelhante ao exibido
abaixo.
C#
Confira também
ToolBar
Como: Disparar eventos de menu para botões da barra de ferramentas
Controle ToolBar
Componente ImageList
Como: Definir um ícone para um botão
de barra de ferramentas usando o
Designer
Artigo • 02/06/2023
7 Observação
ToolBar os botões são capazes de exibir ícones dentro deles para facilitar a identificação
dos usuários. Isso é obtido por meio da adição de imagens ao ImageList componente e
da associação dele ao ToolBar controle.
Confira também
ToolBar
Como: Disparar eventos de menu para botões da barra de ferramentas
Controle ToolBar
Componente ImageList
Como: Disparar eventos de menu para
botões da barra de ferramentas
Artigo • 21/06/2023
7 Observação
C#
toolBar1.ButtonClick +=
new ToolBarButtonClickEventHandler(this.toolBar1_ButtonClick);
}
7 Observação
C#
Confira também
ToolBar
Como: Adicionar botões a um controle ToolBar
Como: Definir um ícone para um botão de barra de ferramentas
Controle ToolBar
Controle ToolStrip (Windows Forms)
Artigo • 02/06/2023
ToolStripos controles são barras de ferramentas que podem hospedar menus, controles
e controles de usuário em seus aplicativos Windows Forms.
Nesta seção
Visão geral do controle ToolStrip
Explica o que é esse controle e seus principais recursos e propriedades.
Como criar um ToolStrip básico dos Windows Forms com itens padrão usando o
designer
ToolStrip
Descreve a classe ToolStrip e tem links a todos os seus membros.
ToolStripItem
Descreve a classe ToolStripItem e tem links a todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle ToolStrip
(Windows Forms)
Artigo • 02/06/2023
O controle Windows Forms ToolStrip e suas classes associadas fornecem uma estrutura
comum para combinar elementos de interface do usuário em barras de ferramentas,
barras de status e menus. ToolStrip os controles oferecem uma experiência avançada em
tempo de design que inclui ativação e edição in-loco, layout personalizado e rafting,
que é a capacidade das barras de ferramentas de compartilhar espaço horizontal ou
vertical.
Nome Descrição
Dock Obtém ou define a qual borda do contêiner pai a ToolStrip está encaixada.
LayoutStyle Obtém ou define um valor que indica como os ToolStrip itens são
configurados.
IsDropDown Obtém um valor que indica se um ToolStripItem exibe outros itens em uma
lista suspensa quando ele ToolStripItem é clicado.
Nome Descrição
Nome Descrição
ToolStripItem Classe base abstrata que gerencia eventos e layout para todos
os elementos que um ToolStrip, ToolStripControlHostou
ToolStripDropDown pode conter.
Confira também
ToolStrip
MenuStrip
ContextMenuStrip
StatusStrip
ToolStripItem
ToolStripDropDown
Resumo da tecnologia de ToolStrip
Artigo • 21/06/2023
Este tópico resume as informações sobre o controle ToolStrip e as classes que dão
suporte ao seu uso.
O controle ToolStrip e suas classes associadas fornecem uma solução completa para a
criação de menus, barras de ferramentas e barras de status.
Namespaces
System.Windows.Forms
Segundo plano
Com o controle ToolStrip e suas classes associadas, você pode criar a funcionalidade
de ferramentas avançada com aparência e comportamento profissional e consistente. O
controle ToolStrip e as classes oferecem os seguintes aperfeiçoamentos em relação
aos controles anteriores:
MenuStrip
ContextMenuStrip
StatusStrip
ToolStripDropDownMenu
Área de tecnologia Classe
ToolStripDropDownItem
ToolStripMenuItem
ToolStripButton
ToolStripStatusLabel
ToolStripSeparator
ToolStripControlHost
ToolStripComboBox
ToolStripTextBox
ToolStripProgressBar
ToolStripDropDownButton
ToolStripSplitButton
Localização ToolStripContainer
ToolStripContentPanel
ToolStripPanel
ToolStripRenderer
ToolStripProfessionalRenderer
ToolStripRenderMode
ToolStripManagerRenderMode
Hospedagem de controles
A ToolStripControlHost classe fornece wrappers internos para
ToolStripComboBoxcontroles , ToolStripTextBoxe ToolStripProgressBar . Você também
pode hospedar qualquer outro controle COM ou existente em um ToolStripControlHost.
Renderização
ToolStripas classes implementam um esquema de renderização que é significativamente
diferente de outros controles Windows Forms. Com esse esquema, você pode
facilmente aplicar estilos e temas.
Para aplicar um estilo a um ToolStrip e a todos os ToolStripItem objetos que ele contém,
você não precisa manipular o Paint evento para cada item. Em vez disso, você pode
definir a RenderMode propriedade como um dos ToolStripRenderMode valores
diferentes de Custom. Como alternativa, você pode definir o Renderer diretamente para
qualquer classe que herde da ToolStripRenderer classe . Definir essa propriedade define
automaticamente o RenderMode.
Você pode aplicar o mesmo estilo a vários ToolStrip objetos no mesmo aplicativo
definindo como RenderModeManagerRenderMode e definindo a RenderMode
propriedade ou Renderer como ToolStripManagerRenderMode que você deseja ou
ToolStripRenderer valor, respectivamente.
Estilos e temas
ToolStrip E as classes associadas fornecem uma maneira fácil de dar suporte a estilos
visuais e aparência personalizada que não exigem a substituição dos OnPaint métodos
para cada item. Use as DisplayStyleRenderMode propriedades e e Renderer .
Reposicionamento e encaixe
Você pode fazer raft, encaixar ou posicionar ToolStrip controles absolutamente. ToolStrip
os itens são dispostos pelo LayoutEngine do contêiner.
A maioria dos ToolStrip controles pode ser encaixada no formulário, como outros
controles, em vez de usar rafting. Você também pode especificar que um ToolStrip
controle seja posicionado livremente no formulário removendo-o de sua
ToolStripContainer propriedade e definindo sua Dock propriedade None como ou pode
especificar sua posição absoluta definindo a respectiva Location propriedade. Consulte
Como remover um ToolStrip de um ToolStripContainer para um formulário.
Confira também
Visão geral do controle ToolStrip
Arquitetura de controle ToolStrip
Arquitetura de controle ToolStrip
Artigo • 21/06/2023
As ToolStrip classes e ToolStripItem fornecem um sistema flexível e extensível para exibir itens
de barra de ferramentas, status e menu. Todas essas classes estão contidas no
System.Windows.Forms namespace e normalmente são nomeadas com o prefixo "ToolStrip"
(como ToolStripOverflow) ou com o sufixo "Strip" (como MenuStrip).
ToolStrip
Os tópicos a seguir descrevem ToolStrip e os controles que derivam dele.
Você pode acessar todos os itens em um ToolStrip por meio da Items coleção. Você pode
acessar todos os itens em um ToolStripDropDownItem por meio da DropDownItems coleção.
Em uma classe derivada de ToolStrip, você também pode usar a DisplayedItems propriedade
para acessar apenas os itens exibidos no momento. Estes são os itens que não estão
atualmente em um menu de estouro.
ToolStripButton
ToolStripSeparator
ToolStripLabel
ToolStripDropDownButton
ToolStripSplitButton
ToolStripTextBox
ToolStripComboBox
MenuStrip
MenuStrip é o contêiner de nível superior que substitui MainMenu. Ele também oferece os
recursos de manipulação de chaves e MDI (interface de múltiplos documentos).
Funcionalmente e ToolStripDropDownItemToolStripMenuItem funcionam junto com
MenuStrip, embora sejam derivados de ToolStripItem.
ToolStripMenuItem
ToolStripTextBox
ToolStripComboBox
StatusStrip
StatusStrip substitui o StatusBar controle . Os recursos especiais de incluem um layout de
StatusStrip tabela personalizado, suporte para dimensionamento e movimentação de alças do
formulário e a Spring propriedade , que permite que um ToolStripStatusLabel preencha o
espaço disponível automaticamente.
ToolStripStatusLabel
ToolStripDropDownButton
ToolStripSplitButton
ToolStripProgressBar
ContextMenuStrip
O ContextMenuStrip substitui o ContextMenu. Você pode associar um ContextMenuStrip a
qualquer controle e um clique com o botão direito do mouse exibe automaticamente o menu
de contexto (ou menu de atalho). Você pode mostrar um ContextMenuStrip
programaticamente usando o Show método . ContextMenuStripdá suporte a eventos e
Closing canceláveis Opening para lidar com a população dinâmica e cenários de vários cliques.
ContextMenuStripdá suporte a imagens, item de menu marcar estado, texto, teclas de acesso,
atalhos e menus em cascata.
Os itens a seguir foram projetados especificamente para funcionar perfeitamente com e
ToolStripSystemRendererToolStripProfessionalRenderer em todas as orientações. Eles estão
disponíveis por padrão em tempo de design para o ContextMenuStrip controle:
ToolStripMenuItem
ToolStripSeparator
ToolStripTextBox
ToolStripComboBox
Pintura
Você pode fazer pintura personalizada em ToolStrip controles de várias maneiras. Assim como
acontece com outros controles Windows Forms, e ToolStripToolStripItem ambos têm métodos
e Paint eventos substituíveis OnPaint . Assim como ocorre com pintura regular, o sistema de
coordenadas é relativo à área de cliente do controle, ou seja, o canto superior esquerdo do
controle é 0, 0. O Paint evento e OnPaint o método para um ToolStripItem se comportam
como outros eventos de pintura de controle.
Os ToolStrip controles também fornecem acesso mais fino à renderização dos itens e do
contêiner por meio da classe , que tem métodos substituíveis para pintar a tela de fundo, o
plano de fundo do item, a imagem do item, a seta do item, o ToolStripRenderer texto do item
e a borda do ToolStrip. Os argumentos de evento para esses métodos expõem várias
propriedades como retângulos, cores e formatos de texto que você pode ajustar conforme
desejado.
Para ajustar apenas alguns aspectos de como um item é pintado, você normalmente substitui
o ToolStripRenderer.
Se você estiver escrevendo um novo item e desejar controlar todos os aspectos de pintura,
substitua o método OnPaint . De dentro OnPaint do , você pode usar métodos do
ToolStripRenderer.
Owner retorna o ToolStrip cuja coleção Items contém o atual ToolStripItem. Essa é a
melhor maneira de referenciar ImageList ou outras propriedades no nível ToolStrip
superior sem escrever código especial para lidar com o estouro.
ToolStrip
MenuStrip
ContextMenuStrip
StatusStrip
Por exemplo, crie um novo aplicativo dos Windows Forms usando um ou mais dos controles
na lista anterior. Defina o modificador de acesso de um ou mais controles para public ou
protected e, em seguida, compile o projeto. Adicione um formulário que herda do primeiro
5. Compile o projeto.
7 Observação
Confiança parcial
As limitações de ToolStrip s sob confiança parcial são projetadas para impedir entrada
acidental de informações pessoais que possam ser usadas por pessoas ou serviços não
autorizados. As medidas de proteção são as seguintes:
Uso
Ingressado em um ToolStripPanel
Encaixado
Posição absoluta
O ToolStrip é como outros controles, pois é colocado pela Location propriedade , tem
um tamanho fixo e normalmente participa da ordem de tabulação.
Interação do teclado
Teclas de acesso
Combinadas com ou após a tecla ALT, as teclas de acesso são uma maneira de ativar um
controle usando o teclado. ToolStrip dá suporte a chaves de acesso explícitas e implícitas. A
definição explícita usa um caractere de e comercial (&) anterior à letra. A definição implícita
usa um algoritmo que tenta encontrar um item correspondente com base na ordem de
caracteres em uma determinada propriedade Text .
Teclas de Atalho
As teclas de atalho usadas por um MenuStrip usam uma combinação da Keys enumeração
(que não é específica da ordem) para definir a tecla de atalho. Você também pode usar a
ShortcutKeyDisplayString propriedade para exibir uma tecla de atalho somente com texto,
como exibir "Del" em vez de "Excluir".
Navegação
A chave ALT ativa o MenuStrip apontado por MainMenuStrip. A partir daí, CTRL+TAB navega
entre ToolStrip controles dentro ToolStripPanel de s. A tecla TAB e as teclas de direção no
teclado numérico navegam entre itens em um ToolStrip. Um algoritmo especial manipula a
navegação na região de estouro. A BARRA DE ESPAÇOS seleciona um ToolStripButton,
ToolStripDropDownButtonou ToolStripSplitButton.
Foco e validação
Quando ativado pela tecla ALT, o MenuStrip ou ToolStrip normalmente não leva nem remove o
foco do controle que atualmente tem o foco. Se houver um controle hospedado no MenuStrip
ou uma lista suspensa do MenuStrip, o controle ganhará foco quando o usuário pressionar a
tecla TAB. Em geral, os GotFocuseventos , LostFocus, Entere Leave de MenuStrip podem não
ser gerados quando são ativados pelo teclado. Nesses casos, use os MenuActivate eventos e
MenuDeactivate .
Por padrão, CausesValidation é false . Chame Validate explicitamente em seu formulário para
executar a validação.
Layout
Layouts de pilha
StackWithOverflow é o padrão. Essa configuração faz com que o ToolStrip altere seu
layout automaticamente de acordo com a Orientation propriedade para lidar com
cenários de arrastar e encaixar.
Layout de fluxo
Você pode usar as Dock propriedades e Anchor no código para alinhar os itens dentro
da linha.
Layout da tabela
Você pode usar as Dock propriedades e Anchor no código para alinhar os itens dentro
da célula da tabela.
ToolStripItem
Os tópicos a seguir descrevem ToolStripItem e os controles que derivam dele.
ToolStripItem é a classe base abstrata para todos os itens que entram em um ToolStrip. O
modelo de objeto a seguir mostra a hierarquia de ToolStripItem herança.
A tabela a seguir lista os controles de estoque ToolStripItem e os contêineres nos quais eles
têm a melhor aparência. Embora qualquer ToolStrip item possa ser hospedado em qualquer
ToolStripcontêiner derivado, esses itens foram projetados para ter a melhor aparência nos
seguintes contêineres:
7 Observação
ToolStripButton
ToolStripButton é o item de botão para ToolStrip. Você pode exibi-lo com vários estilos de
borda e pode usá-lo para representar e ativar estados operacionais. Você também pode
defini-lo para ter o foco por padrão.
ToolStripLabel
O ToolStripLabel fornece funcionalidade de rótulo em ToolStrip controles. O ToolStripLabel é
como um ToolStripButton que não obtém o foco por padrão e que não é renderizado como
enviado por push ou realçado.
ToolStripStatusLabel
ToolStripStatusLabel é uma versão do ToolStripLabel projetada especificamente para uso no
StatusStrip. Os recursos especiais incluem BorderStyle, BorderSidese Spring.
ToolStripSeparator
O ToolStripSeparator adiciona uma linha vertical ou horizontal a uma barra de ferramentas ou
menu, dependendo da orientação. Ele fornece o agrupamento de ou a distinção entre itens,
assim como aqueles em um menu.
ToolStripControlHost
ToolStripControlHost é a classe base abstrata para ToolStripComboBox, ToolStripTextBoxe
ToolStripProgressBar. ToolStripControlHost pode hospedar outros controles, incluindo
controles personalizados, de duas maneiras:
ToolStripComboBox
ToolStripComboBox é o ComboBox otimizado para hospedagem em um ToolStrip. Um
subconjunto das propriedades e eventos do controle hospedado são expostos no
ToolStripComboBox nível, mas o controle subjacente ComboBox é totalmente acessível por
meio da ComboBox propriedade .
ToolStripTextBox
ToolStripTextBox é o TextBox otimizado para hospedagem em um ToolStrip. Um subconjunto
das propriedades e eventos do controle hospedado são expostos no ToolStripTextBox nível,
mas o controle subjacente TextBox é totalmente acessível por meio da TextBox propriedade .
ToolStripProgressBar
ToolStripProgressBar é o ProgressBar otimizado para hospedagem em um ToolStrip. Um
subconjunto das propriedades e eventos do controle hospedado são expostos no
ToolStripProgressBar nível, mas o controle subjacente ProgressBar é totalmente acessível por
meio da ProgressBar propriedade .
ToolStripDropDownItem
ToolStripDropDownItem é a classe base abstrata para ToolStripMenuItem,
ToolStripDropDownButtone ToolStripSplitButton, que pode hospedar itens diretamente ou
hospedar itens adicionais em um contêiner suspenso. Faça isso definindo a DropDown
propriedade como um ToolStripDropDown e definindo a Items propriedade do
ToolStripDropDown. Acesse esses itens suspensos diretamente por meio da DropDownItems
propriedade .
ToolStripMenuItem
ToolStripMenuItem é um ToolStripDropDownItem que funciona com ToolStripDropDownMenu
e ContextMenuStrip para manipular o realce especial, o layout e a disposição de coluna para
menus.
ToolStripDropDownButton
ToolStripDropDownButton se parece ToolStripButtoncom , mas mostra uma área suspensa
quando o usuário clica nela. Ocultar ou mostrar a seta suspensa definindo a
ShowDropDownArrow propriedade . ToolStripDropDownButton hospeda um
ToolStripOverflowButton que exibe itens que transbordam o ToolStrip.
ToolStripSplitButton
ToolStripSplitButton combina a funcionalidade do botão e do botão suspenso.
Use a DefaultItem propriedade para sincronizar o Click evento do item suspenso escolhido
com o item mostrado no botão.
Eventos principais
Tratamento de imagem
Alinhamento
Estilo de exibição
Eventos Principais
Tratamento de Imagem
As Imagepropriedades , ImageAlign, ImageIndex, ImageKeye ImageScaling pertencem a vários
aspectos do tratamento de imagem. Use imagens em ToolStrip controles definindo essas
propriedades diretamente ou definindo a propriedade somente ImageList em tempo de
execução.
Alinhamento
Os itens são colocados no ToolStrip na ordem em que os itens aparecem na coleção Items.
Para alterar programaticamente onde um item é disposto, use o Insert método para mover o
item na coleção. Esse método move o item, mas não o duplica.
Estilo de Exibição
DisplayStyle permite que você defina os valores das propriedades Text e Image de um item
enquanto exibe apenas o que você deseja. Isso normalmente é usado para alterar o estilo de
exibição ao mostrar o mesmo item em um contexto diferente.
Classes acessórias
Classes que fornecem várias outras funcionalidades incluem:
Confira também
Visão geral do controle ToolStrip
Resumo da tecnologia de ToolStrip
Controle ToolStrip
Controle MenuStrip
Controle StatusStrip
Controle ContextMenuStrip
Controle BindingNavigator
Como: Adicionar itens do ToolStrip de
forma dinâmica
Artigo • 21/06/2023
Exemplo
O exemplo de código a seguir demonstra como adicionar dinamicamente itens a um
ContextMenuStrip controle. O exemplo também mostra como reutilizar o mesmo
ContextMenuStrip para três controles diferentes no formulário.
C#
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
C#
public Form3()
{
// Create a new ContextMenuStrip control.
fruitContextMenuStrip = new ContextMenuStrip();
Compilando o código
Este exemplo requer:
Confira também
ContextMenuStrip
MenuStrip
ToolStrip
ToolStripItem
ToolStripMenuItem
ToolStripDropDownButton
Controle ToolStrip
Como criar um ToolStrip básico dos
Windows Forms com itens padrão
usando o designer
Artigo • 02/06/2023
Confira também
ToolStrip
Visão geral do controle ToolStrip
Controle ToolStrip
Arquitetura de controle ToolStrip
Resumo da tecnologia de ToolStrip
Como: Criar um controle ToolStrip com
estilo profissional
Artigo • 02/06/2023
Você pode dar aos controles do ToolStrip seu aplicativo uma aparência profissional e um
comportamento (aparência) escrevendo sua própria classe derivada do
ToolStripProfessionalRenderer tipo.
Exemplo
O exemplo de código a seguir demonstra como usar ToolStrip controles para criar um
controle composto que imita o Painel de Navegação fornecido pelo Microsoft®
Outlook®.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Windows.Forms;
namespace StackViewCS
{
public class StackView : UserControl
{
private ToolStrip stackStrip;
private ToolStripButton mailStackButton;
private ToolStripButton calendarStackButton;
private ToolStripButton contactsStackButton;
private ToolStripButton tasksStackButton;
public StackView()
{
this.InitializeComponent();
// Set up renderers.
this.stackStrip.Renderer = new StackRenderer();
}
return b;
}
// Set AutoSize.
this.AutoSize = true;
}
static StackRenderer()
{
titleBarGripBmp =
StackView.DeserializeFromBase64(titleBarGripEnc);
}
public StackRenderer()
{
}
e.Graphics.DrawRectangle(
SystemPens.ControlDarkDark,
bounds);
g.DrawLine(
SystemPens.ControlDarkDark,
bounds.X,
bounds.Y,
bounds.Width - 1,
bounds.Y);
g.DrawLine(
SystemPens.ControlDarkDark,
bounds.X,
bounds.Y,
bounds.X,
bounds.Height - 1);
if (nextItem == null)
{
g.DrawLine(
SystemPens.ControlDarkDark,
bounds.X,
bounds.Height - 1,
bounds.X + bounds.Width - 1,
bounds.Height - 1);
}
}
}
#endregion
}
}
Compilando o código
Este exemplo requer:
Confira também
MenuStrip
ToolStrip
StatusStrip
Controle ToolStrip
Como: Fornecer itens de menu padrão para um formulário
Como: Criar um formulário MDI com
mesclagem de menu e controles
ToolStrip
Artigo • 02/06/2023
Exemplo
O exemplo de código a seguir demonstra como usar ToolStripPanel controles com um
formulário MDI. O formulário também dá suporte à mesclagem com menus filho.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace MdiFormCS
{
// This code example demonstrates an MDI form
// that supports menu merging and moveable
// ToolStrip controls
public class Form1 : Form
{
private MenuStrip menuStrip1;
private ToolStripMenuItem toolStripMenuItem1;
private ToolStripMenuItem newToolStripMenuItem;
private ToolStripPanel toolStripPanel1;
private ToolStrip toolStrip1;
private ToolStripPanel toolStripPanel2;
private ToolStrip toolStrip2;
private ToolStripPanel toolStripPanel3;
private ToolStrip toolStrip3;
private ToolStripPanel toolStripPanel4;
private ToolStrip toolStrip4;
private System.ComponentModel.IContainer components = null;
public Form1()
{
InitializeComponent();
}
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
}
public ChildForm()
{
InitializeComponent();
}
#endregion
}
Compilando o código
Este exemplo de código requer:
Confira também
Controle ToolStrip
Como: Criar um formulário MDI com
controles ToolStripPanel
Artigo • 02/06/2023
Você pode criar um formulário MDI (interface de documento múltiplo) que tenha
ToolStrip controles que o enquadram em todos os quatro lados.
Exemplo
O exemplo de código a seguir demonstra como usar controles encaixados
ToolStripPanel para enquadrar uma janela MDI com quatro ToolStrip controles.
C#
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
C#
Compilando o código
Este exemplo requer:
Confira também
ToolStrip
ToolStripPanel
Join
ToolStripItem
ToolStripMenuItem
Controle ToolStrip
Como: Alterar a aparência de texto e
imagens de ToolStrip nos Windows
Forms
Artigo • 02/06/2023
C#
toolStripButton2.DisplayStyle =
System.Windows.Forms.ToolStripItemDisplayStyle.Image;
C#
toolStripSplitButton1.TextAlign =
System.Drawing.ContentAlignment.MiddleRight;
C#
toolStripSplitButton1.ImageAlign =
System.Drawing.ContentAlignment.MiddleRight;
Para definir como o texto e as imagens do ToolStripItem
são exibidos em relação uns aos outros
Defina a TextImageRelation propriedade como o valor desejado. As possibilidades
são ImageAboveText , ImageBeforeText , Overlay , TextAboveImage e
TextBeforeImage . O padrão é ImageBeforeText .
C#
toolStripButton1.TextImageRelation =
System.Windows.Forms.TextImageRelation.ImageAboveText;
Confira também
ToolStrip
Visão geral do controle ToolStrip
Arquitetura de controle ToolStrip
Resumo da tecnologia de ToolStrip
Como: Alterar o espaçamento e o
alinhamento de itens ToolStrip no
Windows Forms
Artigo • 02/06/2023
C#
toolStripButton1.AutoSize = false;
C#
C#
toolStripSplitButton1.Alignment =
System.Windows.Forms.ToolStripItemAlignment.Right;
C#
toolStripDropDown1.LayoutStyle =
System.Windows.Forms.ToolStripLayoutStyle.Flow;
Confira também
ToolStrip
Layout
LayoutCompleted
LayoutSettings
TextImageRelation
Placement
CanOverflow
Visão geral do controle ToolStrip
Arquitetura de controle ToolStrip
Resumo da tecnologia de ToolStrip
Como: Criar e definir um renderizador
personalizado para o controle ToolStrip
no Windows Forms
Artigo • 02/06/2023
ToolStrip os controles dão suporte fácil a temas e estilos. Você pode obter aparência e
comportamento completamente personalizados (aparência) definindo a
ToolStrip.Renderer propriedade ou a ToolStripManager.Renderer propriedade como um
renderizador personalizado.
7 Observação
C#
C#
C#
toolStrip1.RenderMode = ToolStripRenderMode.ManagerRenderMode;
ToolStripManager.Renderer = new RedTextRenderer();
Confira também
Renderer
ToolStripRenderer
RenderMode
Visão geral do controle ToolStrip
Arquitetura de controle ToolStrip
Resumo da tecnologia de ToolStrip
Como: Criar botões de alternância em
controles ToolStrip
Artigo • 02/06/2023
C#
toolStripButton1.CheckOnClick = true;
toolStripButton1.CheckedChanged += new _
EventHandler(toolStripButton1_CheckedChanged);
Confira também
ToolStripButton
Visão geral do controle ToolStrip
Como: Personalizar o desenho de um
controle ToolStrip
Artigo • 02/06/2023
7 Observação
Alterar a ProfessionalColorTable
Substitua ProfessionalColorTable e altere as cores desejadas.
C#
C#
Confira também
ToolStripSystemRenderer
ToolStripProfessionalRenderer
ToolStripRenderer
Controles com suporte de desenho do proprietário interno
Como: Criar e definir um renderizador personalizado para o controle ToolStrip no
Windows Forms
Visão geral do controle ToolStrip
Como: Personalizar cores em aplicativos
ToolStrip
Artigo • 02/06/2023
Exemplo
O exemplo de código a seguir demonstra como usar um ToolStripProfessionalRenderer
para definir cores personalizadas em tempo de execução.
C#
Compilando o código
Este exemplo requer:
Confira também
ToolStripManager
ProfessionalColorTable
MenuStrip
ToolStrip
ToolStripProfessionalRenderer
Como: Definir a organização Z de
controles ToolStrip encaixados
Artigo • 02/06/2023
Exemplo
O exemplo de código a seguir demonstra como organizar um ToolStrip controle e um
controle encaixado MenuStrip especificando a ordem z.
C#
public Form2()
{
// Create a new ToolStrip control.
ToolStrip ts = new ToolStrip();
C#
Inverta a ordem dessas chamadas para o Add método e exiba o efeito no layout.
Compilando o código
Este exemplo requer:
Confira também
MenuStrip
ToolStrip
Add
Controls
Dock
Controle ToolStrip
Como: Detectar quando o ponteiro do
mouse passa sobre um ToolStripItem
Artigo • 21/06/2023
Use o procedimento a seguir para detectar quando o ponteiro do mouse está sobre um
ToolStripItem.
Confira também
ToolStripItem
Selected
Visão geral do controle ToolStrip
Como habilitar AutoComplete em
controles ToolStrip nos Windows Forms
Artigo • 02/06/2023
7 Observação
C#
C#
toolStripLabel1.Overflow = _
System.Windows.Forms.ToolStripItemOverflow.Never
toolStripComboBox1.Overflow =
System.Windows.Forms.ToolStripItemOverflow.Never
C#
C#
toolStripComboBox1.AutoCompleteMode =
System.Windows.Forms.AutoCompleteMode.Append;
C#
toolStripComboBox1.AutoCompleteSource =
System.Windows.Forms.AutoCompleteSource.ListItems;
Confira também
ToolStrip
ToolStripLabel
ToolStripComboBox
AutoCompleteMode
AutoCompleteSource
Visão geral do controle ToolStrip
Arquitetura de controle ToolStrip
Resumo da tecnologia de ToolStrip
Como habilitar a reorganização de itens
ToolStrip em tempo de execução no
Windows Forms
Artigo • 02/06/2023
C#
toolStrip1.AllowItemReorder = true;
Confira também
ToolStrip
AllowItemReorder
Visão geral do controle ToolStrip
Arquitetura de controle ToolStrip
Resumo da tecnologia de ToolStrip
Como: Habilitar a tecla TAB para deixar
um controle ToolStrip
Artigo • 02/06/2023
Use o procedimento a seguir para permitir que o usuário pressione a tecla TAB para sair
de um ToolStrip para o próximo controle na ordem de tabulação.
Aceita ToolStrip a primeira tecla TAB e as teclas de direção selecionam itens dentro do
ToolStrip. Quando o usuário pressiona a tecla TAB uma segunda vez, ele leva o usuário
para o próximo controle na ordem de tabulação.
Confira também
ToolStrip
TabStop
Visão geral do controle ToolStrip
Como: Implementar um
ToolStripRenderer personalizado
Artigo • 02/06/2023
Exemplo
O exemplo de código a seguir demonstra como implementar uma classe personalizada
ToolStripRenderer . Neste exemplo, o controle GridStrip implementa um quebra-
cabeça de bloco deslizante, que permite que o usuário mova os blocos em um layout de
tabela para formar uma imagem. Um controle personalizado ToolStrip organiza seus
ToolStripButton controles em um layout de grade. O layout contém uma célula vazia, na
qual o usuário pode deslizar um bloco adjacente usando uma operação do tipo "arrastar
e soltar". Blocos que o usuário pode mover são realçados.
Borda GridStrip
Borda ToolStripButton
ToolStripButton Imagem
C#
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.Layout;
namespace GridStripLib
{
// The following class implements a sliding-tile puzzle.
// The GridStrip control is a custom ToolStrip that arranges
// its ToolStripButton controls in a grid layout. There is
// one empty cell, into which the user can slide an adjacent
// tile with a drag-and-drop operation. Tiles that are eligible
// for moving are highlighted.
public class GridStrip : ToolStrip
{
// The button that is the drag source.
private ToolStripButton dragButton = null;
this.InitializeTableLayoutSettings();
}
if (!this.firstTime)
{
this.Renderer = new GridStripRenderer();
TableLayoutPanelCellPosition pos2 =
this.tableSettings.GetCellPosition(this.Items[lastElement]);
this.tableSettings.SetCellPosition(
this.Items[i++],
pos2);
this.tableSettings.SetCellPosition(
this.Items[lastElement--],
pos1);
}
}
if (btn != null)
{
if (this.IsValidDragSource(btn))
{
this.dragButton = btn;
}
}
}
TableLayoutPanelCellPosition emptyPos =
tableSettings.GetCellPosition(this.emptyCellButton);
return returnValue;
}
this.InitializeBitmap(ts);
}
ControlPaint.DrawFocusRectangle(
e.Graphics,
e.AffectedBounds,
SystemColors.ControlDarkDark,
SystemColors.ControlDarkDark);
}
#endregion
}
}
Compilando o código
Este exemplo requer:
Confira também
MenuStrip
ToolStrip
ToolStripRenderer
ToolStripProfessionalRenderer
ToolStripSystemRenderer
StatusStrip
Controle ToolStrip
Como gerenciar o estouro de ToolStrip
nos Windows Forms
Artigo • 21/06/2023
Quando você adiciona ToolStripItems que exigem mais espaço do que é alocado para o
ToolStrip tamanho atual do formulário, um ToolStripOverflowButton aparece
automaticamente no ToolStrip. Os ToolStripOverflowButton itens exibidos e habilitados
para estouro são movidos para o menu de estouro suspenso. Isso permite que você
personalize e priorize como seus ToolStrip itens se ajustam corretamente a diferentes
tamanhos de formulário. Você também pode alterar a aparência de seus itens quando
eles se enquadram no estouro usando as Placement propriedades e
ToolStripOverflow.DisplayedItems e o LayoutCompleted evento. Se você ampliar o
formulário em tempo de design ou tempo de execução, mais ToolStripItems poderão
ser exibidos no main ToolStrip e o ToolStripOverflowButton poderá até desaparecer até
diminuir o tamanho do formulário.
C#
toolStripTextBox1.Overflow = _
System.Windows.Forms.ToolStripItemOverflow.Never;
Confira também
ToolStrip
ToolStripOverflowButton
Overflow
CanOverflow
Visão geral do controle ToolStrip
Arquitetura de controle ToolStrip
Resumo da tecnologia de ToolStrip
Como: Remover um ToolStrip de um
ToolStripContainer para um formulário
Artigo • 02/06/2023
3. Selecione o formulário.
Confira também
ToolStrip
ToolStripContainer
Visão geral do controle ToolStrip
Como: Posicionar um ToolStripItem em
um ToolStrip
Artigo • 02/06/2023
Confira também
ToolStripItem
ToolStripItemAlignment
Left
Right
Visão geral do controle ToolStrip
Como: Definir o renderizador ToolStrip
em tempo de execução
Artigo • 02/06/2023
Exemplo
O exemplo de código a seguir demonstra como criar uma classe personalizada
ProfessionalColorTable . Essa classe define gradientes para um MenuStrip e um
ToolStrip controle.
Para usar este exemplo de código, compile e execute o aplicativo e clique em Alterar
Cores para aplicar os gradientes definidos na classe personalizada
ProfessionalColorTable .
C#
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
C#
C#
C#
Compilando o código
Este exemplo requer:
Referências aos assemblies System.Design, System.Drawing e
System.Windows.Forms.
Confira também
ToolStripManager
ProfessionalColorTable
MenuStrip
ToolStrip
ToolStripProfessionalRenderer
Controle ToolStrip
Como: Definir o renderizador ToolStrip
para um aplicativo
Artigo • 02/06/2023
Exemplo
O exemplo de código a seguir demonstra como aplicar seletivamente um renderizador
personalizado a um ToolStrip controle e a um MenuStrip controle.
Para usar este exemplo de código, compile e execute o aplicativo e selecione o escopo
da rendição personalizada do ComboBox controle. Clique em Aplicar para definir o
renderizador.
C#
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
C#
public Form6()
{
// Alter the renderer at the top level.
if (targetComboBox.SelectedItem != null)
{
switch (targetComboBox.SelectedItem.ToString())
{
case "Reset":
{
ms.RenderMode = ToolStripRenderMode.ManagerRenderMode;
ts.RenderMode = ToolStripRenderMode.ManagerRenderMode;
break;
}
case "All":
{
ms.RenderMode = ToolStripRenderMode.ManagerRenderMode;
ts.RenderMode = ToolStripRenderMode.ManagerRenderMode;
break;
}
case "MenuStrip":
{
// Assign the custom renderer to the MenuStrip control
only.
ms.Renderer = new CustomProfessionalRenderer();
break;
}
case "ToolStrip":
{
// Assign the custom renderer to the ToolStrip control
only.
ts.Renderer = new CustomProfessionalRenderer();
break;
}
}
}
}
}
if (e.Item.Selected)
{
using (Brush b = new
SolidBrush(ProfessionalColors.SeparatorLight))
{
e.Graphics.FillRectangle(b, r);
}
}
else
{
using (Pen p = new Pen(ProfessionalColors.SeparatorLight))
{
e.Graphics.DrawRectangle(p, r);
}
}
}
}
Compilando o código
Este exemplo requer:
Confira também
ToolStripManager
MenuStrip
ToolStrip
ToolStripProfessionalRenderer
Controle ToolStrip
Como alongar um ToolStripTextBox para
preencher a largura restante de um
ToolStrip (Windows Forms)
Artigo • 02/06/2023
Exemplo
O exemplo de código a seguir fornece uma classe derivada da ToolStripTextBox
chamada ToolStripSpringTextBox . Essa classe substitui o GetPreferredSize método para
calcular a largura disponível do controle pai ToolStrip depois que a largura combinada
de todos os outros itens tiver sido subtraída. Este exemplo de código também fornece
uma Form classe e uma Program classe para demonstrar o novo comportamento.
C#
using System;
using System.Drawing;
using System.Windows.Forms;
if (item is ToolStripSpringTextBox)
{
// For ToolStripSpringTextBox items, increment the count and
// subtract the margin width from the total available width.
springBoxCount++;
width -= item.Margin.Horizontal;
}
else
{
// For all other items, subtract the full width from the
total
// available width.
width = width - item.Width - item.Margin.Horizontal;
}
}
// If the available width is less than the default width, use the
// default width, forcing one or more items onto the overflow menu.
if (width < DefaultSize.Width) width = DefaultSize.Width;
// Retrieve the preferred size from the base class, but change the
// width to the calculated width.
Size size = base.GetPreferredSize(constrainingSize);
size.Width = width;
return size;
}
}
Compilando o código
Este exemplo requer:
Confira também
ToolStrip
ToolStrip.Stretch
ToolStripTextBox
ToolStripTextBox.GetPreferredSize
Arquitetura de controle ToolStrip
Como: Usar a propriedade Spring de forma interativa em um StatusStrip
Como: Usar ToolTips em controles
ToolStrip
Artigo • 02/06/2023
Você pode exibir um ToolTip para o ToolStrip controle desejado definindo a propriedade
do ShowItemToolTips controle como true .
A ToolStripButton usa sua Text propriedade para o ToolTip texto por padrão. Use
este procedimento para exibir texto personalizado em um ToolStripButtonToolTip.
7 Observação
Confira também
ShowItemToolTips
ToolStripButton
ToolStripDropDownButton
ToolStripSplitButton
Visão geral do controle ToolStrip
Como: Encapsular um controle do
Windows Forms com
ToolStripControlHost
Artigo • 02/06/2023
C#
C#
C#
// Expose the MonthCalendar.FirstDayOfWeek as a property.
public Day FirstDayOfWeek
{
get
{
return MonthCalendarControl.FirstDayOfWeek;
}
set { MonthCalendarControl.FirstDayOfWeek = value; }
}
C#
Exemplo
C#
Compilando o código
Este exemplo requer:
Confira também
ToolStripControlHost
Visão geral do controle ToolStrip
Arquitetura de controle ToolStrip
Resumo da tecnologia de ToolStrip
Passo a passo: Criar um controle
ToolStrip com estilo profissional
Artigo • 02/06/2023
Este passo a passo demonstra como usar ToolStrip controles para criar um controle
composto semelhante ao Painel de Navegação fornecido pelo Microsoft® Outlook®.
As seguintes tarefas são ilustradas nesta explicação passo a passo:
Quando tiver terminado, você terá um controle de cliente personalizado reutilizável com
a aparência profissional de um controle do Microsoft Office XP.
Para copiar o código neste tópico como uma única lista, consulte Como criar um
controle ToolStrip com estilo profissional.
Pré-requisitos
Você precisará do Visual Studio para concluir este passo a passo.
Para obter mais informações, consulte Como remover, excluir e excluir itens.
Propriedade Valor
Nome stackStrip
CanOverflow false
Dock Bottom
GripStyle Hidden
LayoutStyle VerticalStackWithOverflow
Preenchimento 0, 7, 0, 0
RenderMode Professional
Propriedade Valor
Nome mailStackButton
CheckOnClick true
CheckState Checked
DisplayStyle ImageAndText
ImageAlign MiddleLeft
Propriedade Valor
ImageScaling None
Margem 0, 0, 0, 0
Preenchimento 3, 3, 3, 3
Texto Correio
TextAlign MiddleLeft
e Tarefas, respectivamente.
Tratar eventos
Dois eventos são importantes para fazer com que o controle StackView se comporte
corretamente. Manipule o Load evento para posicionar o controle corretamente.
Manipule o Click evento para cada ToolStripButton um fornecer o comportamento de
estado do StackView controle semelhante ao RadioButton controle.
C#
// Set AutoSize.
this.AutoSize = true;
}
5. No Designer de Formulários do Windows, selecione o controle mailStackButton .
C#
Definir ícones
Cada botão StackView tem um ícone associado. Para conveniência, cada ícone é
representado como uma cadeia de caracteres codificada em Base64, que é
desserializada antes de uma Bitmap ser criada a partir dela. Em um ambiente de
produção, armazene dados de bitmap como um recurso e seus ícones serão exibidos no
Designer de Formulários do Windows. Para obter mais informações, consulte Como
adicionar imagens de tela de fundo ao Windows Forms.
C#
public StackView()
{
this.InitializeComponent();
// Set up renderers.
this.stackStrip.Renderer = new StackRenderer();
}
return b;
}
C#
public StackView()
{
this.InitializeComponent();
// Set up renderers.
this.stackStrip.Renderer = new StackRenderer();
}
Implementar um renderizador personalizado
Você pode personalizar a maioria dos elementos do StackView controle em que
implemento uma classe derivada da ToolStripRenderer classe. Neste procedimento, você
implementará uma ToolStripProfessionalRenderer classe que personaliza a aderência e
desenha planos de fundo gradientes para os ToolStripButton controles.
C#
static StackRenderer()
{
titleBarGripBmp =
StackView.DeserializeFromBase64(titleBarGripEnc);
}
public StackRenderer()
{
}
e.Graphics.DrawRectangle(
SystemPens.ControlDarkDark,
bounds);
g.DrawLine(
SystemPens.ControlDarkDark,
bounds.X,
bounds.Y,
bounds.Width - 1,
bounds.Y);
g.DrawLine(
SystemPens.ControlDarkDark,
bounds.X,
bounds.Y,
bounds.X,
bounds.Height - 1);
if (nextItem == null)
{
g.DrawLine(
SystemPens.ControlDarkDark,
bounds.X,
bounds.Height - 1,
bounds.X + bounds.Width - 1,
bounds.Height - 1);
}
}
}
2. StackView No construtor do controle, crie uma nova instância da classe e atribua
StackRenderer essa instância à stackStrip propriedade do Renderer controle.
C#
public StackView()
{
this.InitializeComponent();
// Set up renderers.
this.stackStrip.Renderer = new StackRenderer();
}
Próximas etapas
Neste passo a passo, você criou controle de cliente personalizado reutilizável com a
aparência profissional de um controle do Office XP. Você pode usar a ToolStrip família
de controles para muitas outras finalidades:
Crie menus de atalho para seus controles com ContextMenuStrip. Para obter mais
informações, consulte Visão geral do componente ContextMenu.
Este passo a passo demonstra como usar ToolStripPanel controles com um formulário
MDI. O formulário também dá suporte à mesclagem com menus filho. As seguintes
tarefas são ilustradas nesta explicação passo a passo:
Quando terminar, você terá um formulário MDI que dá suporte à mesclagem de menus
e controles móveis ToolStrip .
Para copiar o código neste tópico como uma única lista, consulte Como criar um
formulário MDI com mesclagem de menu e controles ToolStrip.
Pré-requisitos
Você precisará do Visual Studio para concluir este passo a passo.
Criar o projeto
1. No Visual Studio, crie um projeto de aplicativo do Windows chamado MdiForm
(File>New>Project>Visual C# ou Visual Basic>Classic Desktop>Windows Forms
Application).
C#
2. Clique com o botão direito do mouse para abrir o menu de atalho e selecione
Escolher Itens.
Para obter mais informações, consulte Editor de Coleção dos Itens ToolStrip.
Testar o formulário
1. Pressione F5 para compilar e executar seu formulário.
2. Clique no item de menu Janela para abrir o menu e, em seguida, clique em Novo.
5. Repita as etapas de 1 a 4.
4. Selecione ToolStripPanel2.
5. Clique no botão de seta para baixo uma vez para posicionar o controle em terceiro
lugar na lista.
Próximas etapas
Neste passo a passo, você criou um formulário pai MDI com ToolStrip controles e
mesclagem de menu. Você pode usar a ToolStrip família de controles para muitas outras
finalidades:
Crie menus de atalho para seus controles com ContextMenuStrip. Para obter mais
informações, consulte Visão geral do componente ContextMenu.
Dê aos seus ToolStrip controles uma aparência profissional. Para obter mais
informações, consulte Como definir o renderizador ToolStrip para um aplicativo.
Confira também
MenuStrip
ToolStrip
StatusStrip
Como: criar formulários pai MDI
Como: criar formulários filho MDI
Como: Inserir um MenuStrip em um menu suspenso MDI
Controle ToolStrip
Controle ToolStripContainer
Artigo • 02/06/2023
Os tópicos nesta seção descrevem os conceitos e técnicas que você pode usar para
compilar recursos ToolStripContainer em seus aplicativos.
Nesta seção
Visão geral do controle ToolStripContainer
Fornece tópicos que descrevem a finalidade e os principais conceitos do controle
Windows FormsToolStripContainer.
Referência
ToolStripContainer
Fornece documentação de referência para o ToolStripContainer controle.
ToolStripContentPanel
Fornece documentação de ToolStripContainer referência para o ToolStripContentPanel
controle.
Seções relacionadas
ToolStripPanel
Fornece documentação de referência para o ToolStripPanel controle.
Confira também
Controles a serem usados nos Windows Forms
Visão geral do controle
ToolStripContainer
Artigo • 02/06/2023
A ToolStripContainer tem painéis nos lados esquerdo, direito, superior e inferior para
posicionamento e rafting ToolStripe MenuStripStatusStrip controles. Vários ToolStrip
controles são empilhados verticalmente se você colocá-los à esquerda ou à direita
ToolStripContainer. Eles são empilhados horizontalmente se você colocá-los na parte
superior ou inferior ToolStripContainer. Você pode usar a central ToolStripContentPanel
do para posicionar controles ToolStripContainer tradicionais no formulário.
Nome Descrição
Confira também
ToolStripContainer
ToolStripContentPanel
Como: Adicionar um ToolStripContainer
a um formulário
Artigo • 02/06/2023
Exemplo
O exemplo de código a seguir demonstra como adicionar um ToolStripContainer e um
ToolStrip a um Windows Forms, como adicionar itens ao
ToolStripTopToolStripPanelToolStripToolStripContainer.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
public Form1()
{
InitializeComponent();
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
Compilando o código
Este exemplo de código requer:
Confira também
ToolStripContainer
Controle ToolStripContainer
Controle ToolStrip
Como: Adicionar um controle a um
ToolStripContentPanel
Artigo • 02/06/2023
Exemplo
O exemplo de código a seguir demonstra como adicionar um RichTextBox a um
ToolStripContentPanel.
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
public Form1()
{
InitializeComponent();
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
Confira também
ToolStripContentPanel
ToolStripContainer
Controle ToolStripContainer
Controle ToolStrip
Controle ToolStripPanel
Artigo • 02/06/2023
Os tópicos nesta seção descrevem os conceitos e técnicas que você pode usar para
compilar recursos ToolStripPanel em seus aplicativos.
Nesta seção
Visão geral do controle ToolStripPanel
Fornece tópicos que descrevem a finalidade e os principais conceitos do controle
Windows FormsToolStripContainer.
Referência
ToolStripPanel
Fornece documentação de referência para o ToolStripPanel controle.
Confira também
Controles a serem usados nos Windows Forms
Visão geral do controle ToolStripPanel
Artigo • 02/06/2023
Nome Descrição
Confira também
ToolStripContainer
ToolStripContentPanel
Exemplo de ToolStrip
Como: Unir ToolStripPanels
Artigo • 02/06/2023
Você pode unir ToolStrip controles a um ToolStripPanel tempo de execução, que fornece
a flexibilidade de aplicativos MDI (interface de vários documentos).
Exemplo
O exemplo de código a seguir demonstra como unir ToolStrip controles a um
ToolStripPanel.
C#
Compilando o código
Este exemplo requer:
Confira também
ToolStrip
ToolStripPanel
Como: Usar ToolStripPanels para MDI
Como: Usar ToolStripPanels para MDI
Artigo • 02/06/2023
Exemplo
O exemplo de código a seguir demonstra como usar ToolStripPanel controles para MDI.
C#
Compilando o código
Este exemplo requer:
Confira também
ToolStripPanel
Como: Unir ToolStripPanels
Controle ToolStripProgressBar
Artigo • 02/06/2023
Nesta seção
Visão geral do controle ToolStripProgressBar
Fornece tópicos que descrevem a finalidade e os principais conceitos do controle
Windows FormsToolStripProgressBar.
Referência
ToolStripPanel
Fornece documentação de referência para o ToolStripPanel controle.
ToolStripProgressBar
Fornece documentação de referência para o ToolStripProgressBar controle.
Confira também
Controles a serem usados nos Windows Forms
Visão geral do controle
ToolStripProgressBar
Artigo • 02/06/2023
Nome Descrição
Minimum Obtém ou define o limite inferior do intervalo que está definido para
esse ToolStripProgressBar.
Confira também
ToolStripProgressBar
Controle ToolStripStatusLabel
Artigo • 02/06/2023
Nesta seção
Visão geral do controle ToolStripStatusLabel
Fornece tópicos que descrevem a finalidade e os principais conceitos do controle
Windows FormsToolStripStatusLabel.
Referência
ToolStripStatusLabel
Fornece documentação de referência para o ToolStripStatusLabel controle.
StatusStrip
Fornece documentação de referência para o StatusStrip controle.
ToolStripProgressBar
Fornece documentação de referência para o ToolStripProgressBar controle.
Confira também
Controles a serem usados nos Windows Forms
Visão geral do controle
ToolStripStatusLabel
Artigo • 02/06/2023
Nome Descrição
BorderSides Obtém ou define um valor que indica quais lados do ToolStripStatusLabel mostram
bordas.
Confira também
ToolStripStatusLabel
Componente ToolTip (Windows Forms)
Artigo • 02/06/2023
O componente Windows Forms ToolTip exibe texto quando o usuário aponta para
controles. Uma dica de ferramenta pode ser associada a qualquer controle. Um exemplo
de uso desse controle: para economizar espaço em um formulário, você pode exibir um
pequeno ícone em um botão e usar uma Dica de Ferramenta para explicar a função do
botão.
Nesta seção
Visão geral do componente ToolTip
Apresenta os conceitos gerais do componente, que ToolTip permite que os usuários
vejam o texto quando apontam o mouse para um controle.
Referência
Classe ToolTip
Fornece informações de referência sobre a classe e seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
O componente Windows Forms ToolTip exibe texto quando o usuário aponta para
controles. Uma dica de ferramenta pode ser associada a qualquer controle. Um exemplo
de uso desse componente: para economizar espaço em um formulário, você pode exibir
um pequeno ícone em um botão e usar uma dica de ferramenta para explicar a função
do botão.
Confira também
ToolTip
Como: Definir ToolTips para controles em um Windows Form no momento do
design
Como: Alterar o atraso do componente ToolTip do Windows Forms
Como definir dicas de ferramenta para
controles em um formulário Windows
em tempo de design
Artigo • 02/06/2023
Você pode definir uma cadeia ToolTip de caracteres no código ou no designer Windows
Forms no Visual Studio. Para obter mais informações sobre o componente ToolTip ,
consulte Visão geral do componente ToolTip.
C#
C#
Confira também
Visão geral do componente ToolTip
Como: Alterar o atraso do componente ToolTip do Windows Forms
Componente ToolTip
Como: Alterar o atraso do componente
ToolTip do Windows Forms
Artigo • 02/06/2023
Há vários valores de atraso que você pode definir para um componente Windows
FormsToolTip. A unidade de medida para todas essas propriedades é milissegundos. A
InitialDelay propriedade determina quanto tempo o usuário deve apontar para o
controle associado para que a cadeia de caracteres ToolTip apareça. A ReshowDelay
propriedade define o número de milissegundos necessários para que cadeias de
caracteres de Dica de Ferramenta subsequentes apareçam à medida que o mouse passa
de um controle associado à Dica de Ferramenta para outro. A AutoPopDelay
propriedade determina o período de tempo que a cadeia de caracteres ToolTip é
mostrada. Você pode definir esses valores individualmente ou definindo o valor da
AutomaticDelay propriedade; as outras propriedades de atraso são definidas com base
no valor atribuído à AutomaticDelay propriedade. Por exemplo, quando AutomaticDelay
é definido como um valor N, InitialDelay é definido como N, ReshowDelay é definido
como o valor dividido AutomaticDelay por cinco (ou N/5) e AutoPopDelay é definido
como um valor cinco vezes o valor da AutomaticDelay propriedade (ou 5N).
C#
ToolTip1.InitialDelay = 500;
ToolTip1.ReshowDelay = 100;
ToolTip1.AutoPopDelay = 5000;
Confira também
Visão geral do componente ToolTip
Como: Definir ToolTips para controles em um Windows Form no momento do
design
Componente ToolTip
Controle TrackBar (Windows Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do controle TrackBar
Apresenta os conceitos gerais do controle, que TrackBar permite que os usuários
naveguem por informações ajustando visualmente uma configuração numérica.
Referência
Classe TrackBar
Fornece informações de referência sobre a classe e seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle TrackBar
(Windows Forms)
Artigo • 02/06/2023
Propriedades da chave
As principais propriedades do TrackBar controle sãoValue, e
MinimumTickFrequencyMaximum. TickFrequency é o espaçamento dos tiques.
Minimum e Maximum são os menores e maiores valores que podem ser representados
na barra de faixas.
Confira também
TrackBar
Controle TrackBar
Controle TreeView (Windows Forms)
Artigo • 02/06/2023
O controle TreeView dos Windows Forms exibe uma hierarquia de nós, como a forma
como arquivos e pastas são exibidos no painel esquerdo do recurso Windows Explorer
em sistemas operacionais Windows.
Nesta seção
Visão geral do controle TreeView
Explica o que é o controle e seus principais recursos e propriedades.
Veja também como adicionar e remover nós com o controle Windows Forms TreeView
usando o designer e como anexar um menu de atalho a um TreeNode usando o
designer.
Referência
Classe TreeView
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Controles a serem usados nos Windows Forms
Fornece uma lista completa dos controles dos Windows Forms, com links para
informações sobre seu uso.
Visão geral do controle TreeView
(Windows Forms)
Artigo • 02/06/2023
Com o controle Windows FormsTreeView, você pode exibir uma hierarquia de nós para
os usuários, como a maneira como arquivos e pastas são exibidos no painel esquerdo
do recurso do Windows Explorer do sistema operacional Windows. Cada nó no modo
de exibição de árvore pode conter outros nós, chamados nós filho. Você pode exibir nós
pai ou nós que contêm nós filhos, como expandidos ou recolhidos. Você também pode
exibir uma exibição de árvore com caixas de seleção ao lado dos nós definindo a
propriedade do modo de exibição de CheckBoxes árvore como true . Em seguida, você
pode selecionar ou limpar nós programaticamente definindo a propriedade true do
Checked nó como ou false .
Propriedades da chave
As principais propriedades do TreeView controle são Nodes e SelectedNode. A Nodes
propriedade contém a lista de nós de nível superior no modo de exibição de árvore. A
SelectedNode propriedade define o nó selecionado no momento. Você pode exibir
ícones ao lado de nós. O controle usa imagens do ImageList nome na propriedade do
modo de exibição de ImageList árvore. A ImageIndex propriedade define a imagem
padrão para nós no modo de exibição de árvore. Para obter mais informações sobre
como exibir imagens, veja Como definir ícones para o controle TreeView dos Windows
Forms. Se você estiver usando o Visual Studio 2005, terá acesso a uma grande biblioteca
de imagens padrão que você pode usar com o TreeView controle.
Confira também
TreeView
Controle TreeView
Como: Definir ícones para o controle TreeView do Windows Forms
Como: Adicionar e remover nós com o controle TreeView do Windows Forms
Como: Iterar em todos os nós de um controle TreeView do Windows Forms
Como: Determinar qual nó TreeView foi clicado
Como: Adicionar informações personalizadas a um controle TreeView ou ListView
(Windows Forms)
Como: Adicionar e remover nós com o
controle TreeView do Windows Forms
Artigo • 02/06/2023
O controle Windows Forms TreeView armazena os nós de nível superior em sua Nodes
coleção. Cada TreeNode um também tem sua própria Nodes coleção para armazenar
seus nós filho. Ambas as propriedades de coleção são do tipo TreeNodeCollection, que
fornece membros de coleção padrão que permitem adicionar, remover e reorganizar os
nós em um único nível da hierarquia de nós.
C#
C#
Confira também
Controle TreeView
Visão geral do controle TreeView
Como: Definir ícones para o controle TreeView do Windows Forms
Como: Iterar em todos os nós de um controle TreeView do Windows Forms
Como: Determinar qual nó TreeView foi clicado
Como: Adicionar informações personalizadas a um controle TreeView ou ListView
(Windows Forms)
Como: Adicionar e remover nós com o
componente TreeView do Windows
Forms usando o designer
Artigo • 02/06/2023
3. Para adicionar nós, deve existir um nó raiz; se não existir, primeiro adicione uma
raiz clicando no botão Adicionar Raiz. Em seguida, adicione nós filho,
selecionando a raiz ou qualquer outro nó e clicando no botão Adicionar Filho.
Confira também
Controle TreeView
Visão geral do controle TreeView
Como: Definir ícones para o controle TreeView do Windows Forms
Como: Iterar em todos os nós de um controle TreeView do Windows Forms
Como: Determinar qual nó TreeView foi clicado
Como: Adicionar informações personalizadas a um controle TreeView ou ListView
(Windows Forms)
Como: Anexar um menu ShortCut a um
nó TreeView
Artigo • 21/06/2023
O controle Windows Forms TreeView exibe uma hierarquia de nós, semelhante aos
arquivos e pastas exibidos no painel esquerdo do Windows Explorer. Ao definir a
ContextMenuStrip propriedade , você pode fornecer operações contextuais ao usuário
quando ele clicar com o botão direito do mouse no TreeView controle. Ao associar um
ContextMenuStrip componente a itens individuais TreeNode , você pode adicionar um
nível personalizado de funcionalidade de menu de atalho aos seus TreeView controles.
4. Quando essa propriedade for definida, o menu de atalho será exibido quando
você clicar no nó com o botão direito do mouse.
C#
Confira também
ContextMenuStrip
Controle TreeView
Como: Anexar um menu de atalho a um
TreeNode usando o designer
Artigo • 21/06/2023
O controle Windows Forms TreeView exibe uma hierarquia de nós, semelhante aos
arquivos e pastas exibidos no painel esquerdo do recurso do Windows Explorer em
sistemas operacionais Windows. Ao definir a ContextMenuStrip propriedade , você pode
fornecer operações contextuais ao usuário quando ele clicar com o botão direito do
mouse no TreeView controle. Ao associar um ContextMenuStrip componente a itens
individuais TreeNode , você pode adicionar um nível personalizado de funcionalidade de
menu de atalho aos seus TreeView controles.
4. Quando essa propriedade for definida, o menu de atalho será exibido quando
você clicar no nó com o botão direito do mouse.
Além disso, você desejará escrever código para manipular os Click eventos desses
itens de menu.
Confira também
Controle TreeView
Visão geral do controle TreeView
Controle ContextMenuStrip
Como: Adicionar informações
personalizadas a um controle TreeView
ou ListView (Windows Forms)
Artigo • 02/06/2023
C#
2. Se você tiver passado o nó de árvore e ele for digitado como uma TreeNode
classe, será necessário converter para sua classe derivada. Se trata de uma
conversão explícita de um tipo de objeto para outro. Para obter mais informações
sobre conversão, consulte Conversões implícitas e explícitas (Visual Basic),
conversões de conversão e tipo (Visual C#) ou Operador cast: () (Visual C++).
C#
Confira também
Controle TreeView
Controle ListView
Como determinar qual nó TreeView foi
clicado (Windows Forms)
Artigo • 21/06/2023
C#
7 Observação
Confira também
Controle TreeView
Como: Iterar em todos os nós de um
controle TreeView do Windows Forms
Artigo • 02/06/2023
Cada TreeNode objeto em um exibição de árvore tem propriedades que você pode usar
para navegar no exibição de árvore: FirstNode, LastNode, NextNode, PrevNodee Parent.
O valor da propriedade Parent é o nó pai do nó atual. Os nós filho do nó atual, se
houver algum, são listados em sua Nodes propriedade. O TreeView próprio controle tem
a propriedade TopNode , que é o nó raiz de toda a exibição de árvore.
Abordagem recursiva
A abordagem recursiva usa um método que processa um nó de árvore e, em seguida,
chama o mesmo método para cada nó filho. Isso se repete até que cada nó na árvore
seja processado. A desvantagem dessa abordagem é que, se a árvore for grande, você
poderá ter um erro de estouro de pilha e ficar sem memória.
O exemplo a seguir mostra como imprimir a TreeNode propriedade de cada Text objeto:
C#
C#
O controle Windows Forms TreeView pode exibir ícones ao lado de cada nó. Os ícones
são posicionados imediatamente à esquerda do texto do nó. Para exibir esses ícones,
você deve associar o modo de exibição de árvore a um ImageList controle. Para obter
mais informações sobre listas de imagens, consulte Componente ImageList e Como
adicionar ou remover imagens com o componente ImageList dos Windows Forms.
7 Observação
Um bug no Microsoft .NET Framework versão 1.1 impede que imagens apareçam
em TreeView nós quando o aplicativo chamaApplication.EnableVisualStyles. Para
contornar esse bug, chame Application.DoEvents seu Main método imediatamente
após a chamada EnableVisualStyles. Esse bug é corrigido no .NET Framework 2.0.
C#
treeView1.ImageList = imageList1;
C#
// (Assumes that imageList1 contains at least two images and
// the TreeView control contains a selected image.)
treeView1.SelectedNode.ImageIndex = 0;
treeView1.SelectedNode.SelectedImageIndex = 1;
Confira também
Visão geral do controle TreeView
Como: Adicionar e remover nós com o controle TreeView do Windows Forms
Como: Iterar em todos os nós de um controle TreeView do Windows Forms
Como: Determinar qual nó TreeView foi clicado
Como: Adicionar informações personalizadas a um controle TreeView ou ListView
(Windows Forms)
Controle WebBrowser (Windows Forms)
Artigo • 02/06/2023
Nesta seção
Visão geral do controle WebBrowser
Explica o que é esse controle e seus principais recursos e propriedades.
Segurança de WebBrowser
Discute problemas de segurança relacionados ao controle.
Referência
Classe WebBrowser
Descreve essa classe e tem links para todos os seus membros.
WebBrowserDocumentCompletedEventArgs
Descreve essa classe e tem links para todos os seus membros.
WebBrowserDocumentCompletedEventHandler
Descreve esse delegado.
WebBrowserEncryptionLevel
Descreve esta enumeração e todos os seus valores.
WebBrowserNavigatedEventArgs
Descreve essa classe e tem links para todos os seus membros.
WebBrowserNavigatedEventHandler
Descreve esse delegado.
WebBrowserNavigatingEventArgs
Descreve essa classe e tem links para todos os seus membros.
WebBrowserNavigatingEventHandler
Descreve esse delegado.
WebBrowserProgressChangedEventArgs
Descreve essa classe e tem links para todos os seus membros.
WebBrowserProgressChangedEventHandler
Descreve esse delegado.
WebBrowserReadyState
Descreve esta enumeração e todos os seus valores.
WebBrowserRefreshOption
Descreve esta enumeração e todos os seus valores.
Confira também
Controles a serem usados nos Windows Forms
Visão geral do controle WebBrowser
Artigo • 02/06/2023
barra de ferramentas. Você pode manipular o evento Navigated para atualizar a barra
de endereços com o valor da propriedade Url e a barra de título com o valor da
propriedade DocumentTitle .
Se você quiser gerar seu próprio conteúdo de página dentro de seu aplicativo, defina a
propriedade DocumentText . Se você estiver familiarizado com o DOM (Modelo de Objeto
do Documento) HTML, também poderá manipular o conteúdo da página da Web por
meio da propriedade Document . Com essa propriedade, você pode armazenar e
modificar documentos na memória, em vez de navegar entre arquivos.
Nome Descrição
Nome Descrição
Propriedade Obtém um objeto que fornece acesso gerenciado para DOM (Modelo de
Document Objeto do Documento) HTML da página da Web atual.
Evento Navigating Ocorre antes do início de navegação, permitindo que a ação seja
cancelada.
Propriedade Url Obtém ou define a URL da página da Web atual. Configurar essa
propriedade leva o controle para a nova URL.
Confira também
WebBrowser
WebBrowserDocumentCompletedEventArgs
WebBrowserDocumentCompletedEventHandler
WebBrowserEncryptionLevel
WebBrowserNavigatedEventArgs
WebBrowserNavigatedEventHandler
WebBrowserNavigatingEventArgs
WebBrowserNavigatingEventHandler
WebBrowserProgressChangedEventArgs
WebBrowserReadyState
WebBrowserRefreshOption
Como: Navegar até uma URL com o controle WebBrowser
Como: Imprimir com um controle WebBrowser
Como: Adicionar recursos do navegador da Web a um Aplicativo do Windows
Forms
Como: Criar um visualizador de documento HTML em um Aplicativo do Windows
Forms
Como: Implementar a comunicação bidirecional entre o código DHTML e o código
do aplicativo cliente
Segurança de WebBrowser
Segurança de WebBrowser
Artigo • 02/06/2023
Confira também
WebBrowser
Visão geral do controle WebBrowser
Controle WebBrowser
Como: Navegar até uma URL com o
controle WebBrowser
Artigo • 21/06/2023
Exemplo
C#
this.webBrowser1.Navigate("https://www.microsoft.com");
Compilando o código
Este exemplo requer:
Confira também
WebBrowser
WebBrowser.DocumentCompleted
WebBrowser.Navigating
WebBrowser.Navigated
Controle WebBrowser
Como: Imprimir com um controle WebBrowser
Como: Imprimir com um controle
WebBrowser
Artigo • 02/06/2023
Exemplo
C#
Compilando o código
Este exemplo requer:
Confira também
WebBrowser
Print
Url
Como: Navegar até uma URL com o controle WebBrowser
Como: Adicionar recursos do navegador da Web a um Aplicativo do Windows
Forms
Como: Criar um visualizador de documento HTML em um Aplicativo do Windows
Forms
Visão geral do controle WebBrowser
Segurança de WebBrowser
Como adicionar recursos do navegador
da Web a um aplicativo Windows Forms
Artigo • 02/06/2023
Exemplo
C#
using System;
using System.Windows.Forms;
using System.Security.Permissions;
// Selects all the text in the text box when the user clicks it.
private void toolStripTextBox1_Click(object sender, EventArgs e)
{
toolStripTextBox1.SelectAll();
}
// Updates the status bar with the current browser status text.
private void webBrowser1_StatusTextChanged(object sender, EventArgs e)
{
toolStripStatusLabel1.Text = webBrowser1.StatusText;
}
menuStrip1.Items.Add(fileToolStripMenuItem);
fileToolStripMenuItem.DropDownItems.AddRange(
new ToolStripItem[] {
saveAsToolStripMenuItem, toolStripSeparator1,
pageSetupToolStripMenuItem, printToolStripMenuItem,
printPreviewToolStripMenuItem, toolStripSeparator2,
propertiesToolStripMenuItem, exitToolStripMenuItem
});
fileToolStripMenuItem.Text = "&File";
saveAsToolStripMenuItem.Text = "Save &As...";
pageSetupToolStripMenuItem.Text = "Page Set&up...";
printToolStripMenuItem.Text = "&Print...";
printPreviewToolStripMenuItem.Text = "Print Pre&view...";
propertiesToolStripMenuItem.Text = "Properties";
exitToolStripMenuItem.Text = "E&xit";
saveAsToolStripMenuItem.Click +=
new System.EventHandler(saveAsToolStripMenuItem_Click);
pageSetupToolStripMenuItem.Click +=
new System.EventHandler(pageSetupToolStripMenuItem_Click);
printToolStripMenuItem.Click +=
new System.EventHandler(printToolStripMenuItem_Click);
printPreviewToolStripMenuItem.Click +=
new System.EventHandler(printPreviewToolStripMenuItem_Click);
propertiesToolStripMenuItem.Click +=
new System.EventHandler(propertiesToolStripMenuItem_Click);
exitToolStripMenuItem.Click +=
new System.EventHandler(exitToolStripMenuItem_Click);
toolStrip1.Items.AddRange(new ToolStripItem[] {
goButton, backButton, forwardButton, stopButton,
refreshButton, homeButton, searchButton, printButton});
goButton.Text = "Go";
backButton.Text = "Back";
forwardButton.Text = "Forward";
stopButton.Text = "Stop";
refreshButton.Text = "Refresh";
homeButton.Text = "Home";
searchButton.Text = "Search";
printButton.Text = "Print";
backButton.Enabled = false;
forwardButton.Enabled = false;
toolStrip2.Items.Add(toolStripTextBox1);
toolStripTextBox1.Size = new System.Drawing.Size(250, 25);
toolStripTextBox1.KeyDown +=
new KeyEventHandler(toolStripTextBox1_KeyDown);
toolStripTextBox1.Click +=
new System.EventHandler(toolStripTextBox1_Click);
statusStrip1.Items.Add(toolStripStatusLabel1);
webBrowser1.Dock = DockStyle.Fill;
webBrowser1.Navigated +=
new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);
Controls.AddRange(new Control[] {
webBrowser1, toolStrip2, toolStrip1,
menuStrip1, statusStrip1, menuStrip1 });
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
Compilar o código
Este exemplo requer:
Confira também
WebBrowser
Controle WebBrowser
Como: Criar um visualizador de
documento HTML em um Aplicativo do
Windows Forms
Artigo • 02/06/2023
Você pode usar o WebBrowser controle para exibir e imprimir documentos HTML sem
fornecer a funcionalidade completa de um navegador da Internet. Isso é útil quando
você quer aproveitar os recursos de formatação de HTML, mas não quer que os usuários
carreguem páginas da Web arbitrárias que podem conter controles de Web não
confiáveis ou código de script potencialmente mal-intencionado. Talvez você queira
restringir a funcionalidade do WebBrowser controle dessa maneira, por exemplo, para
usá-lo como um visualizador de email HTML ou para fornecer ajuda formatada em
HTML em seu aplicativo.
C#
webBrowser1.AllowWebBrowserDrop = false;
C#
Compilando o código
Este exemplo requer:
Confira também
WebBrowser
AllowWebBrowserDrop
Url
Visão geral do controle WebBrowser
Segurança de WebBrowser
Como: Navegar até uma URL com o controle WebBrowser
Como: Imprimir com um controle WebBrowser
Como: Implementar a comunicação
bidirecional entre o código DHTML e o
código do aplicativo cliente
Artigo • 02/06/2023
Você pode usar o controle para adicionar o WebBrowser código de aplicativo Web
DHTML (HTML dinâmico) existente aos seus aplicativos cliente Windows Forms. Isso é
útil quando você tiver investido tempo de desenvolvimento significativo na criação de
controles com base em DHTML e quiser aproveitar os recursos de interface do usuário
avançada dos Windows Forms sem reescrever o código existente.
C#
webBrowser1.AllowWebBrowserDrop = false;
C#
webBrowser1.IsWebBrowserContextMenuEnabled = false;
3. Defina a propriedade do WebBrowserShortcutsEnabled controle para false
impedir que o WebBrowser controle responda a teclas de atalho.
C#
webBrowser1.WebBrowserShortcutsEnabled = false;
C#
C#
HTML
<button onclick="window.external.Test('called from script code')">
call client code from script code
</button>
7. Implemente funções em seu código de script que seu código do aplicativo usará.
O seguinte elemento SCRIPT HTML apresenta uma função de exemplo. Copie esse
código para o elemento HEAD de um documento HTML que você carrega usando
o método do Navigate controle ou que você atribui à propriedade do
DocumentText controle.
HTML
<script>
function test(message) {
alert(message);
}
</script>
C#
webBrowser1.Document.InvokeScript("test",
new String[] { "called from client code" });
C#
Exemplo
O exemplo de código completo a seguir fornece um aplicativo de demonstração que
você pode usar para entender esse recurso. O código HTML é carregado no
WebBrowser controle por meio da DocumentText propriedade em vez de ser carregado
de um arquivo HTML separado.
C#
using System;
using System.Windows.Forms;
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
public Form1()
{
button1.Text = "call script code from client code";
button1.Dock = DockStyle.Top;
button1.Click += new EventHandler(button1_Click);
webBrowser1.Dock = DockStyle.Fill;
Controls.Add(webBrowser1);
Controls.Add(button1);
}
webBrowser1.AllowWebBrowserDrop = false;
webBrowser1.IsWebBrowserContextMenuEnabled = false;
webBrowser1.WebBrowserShortcutsEnabled = false;
webBrowser1.ObjectForScripting = new MyScriptObject(this);
// Uncomment the following line when you are finished debugging.
//webBrowser1.ScriptErrorsSuppressed = true;
webBrowser1.DocumentText =
"<html><head><script>" +
"function test(message) { alert(message); }" +
"</script></head><body><button " +
"onclick=\"window.external.Test('called from script code')\">" +
"call client code from script code</button>" +
"</body></html>";
}
Compilando o código
Este código requer:
Confira também
WebBrowser
WebBrowser.Document
WebBrowser.ObjectForScripting
Controle WebBrowser
Usando o Document Object Model
HTML gerenciado
Artigo • 02/06/2023
Nesta seção
Como: Acessar o Modelo de Objeto do Documento HTML gerenciado
Descreve como obter uma instância válida de HtmlDocument um aplicativo Windows
Forms ou um UserControl hospedado no Internet Explorer.
Referência
HtmlDocument
HtmlElement
HtmlWindow
Seções relacionadas
Controle WebBrowser
Como: Acessar o Modelo de Objeto do
Documento HTML gerenciado
Artigo • 21/06/2023
C#
Programação robusta
1. Ao usar o DOM através do controle WebBrowser, é sempre necessário esperar até
o evento DocumentCompleted ocorrer antes de tentar acessar a propriedade
Document do controle WebBrowser. O evento DocumentCompleted é elevado
após o documento inteiro ser carregado, se o DOM for usado antes disso, haverá o
risco de causar uma exceção de tempo de execução no aplicativo.
Confira também
Usando o Document Object Model HTML gerenciado
Como: Acessar a fonte HTML no Modelo
de Objeto do Documento HTML
gerenciado
Artigo • 21/06/2023
C#
C#
if (webBrowser1.Document != null)
{
CodeForm cf = new CodeForm();
HtmlElementCollection elems =
webBrowser1.Document.GetElementsByTagName("HTML");
if (elems.Count == 1)
{
elem = elems[0];
cf.Code = elem.OuterHtml;
cf.Show();
}
}
}
Programação robusta
Sempre teste o valor de Document antes de tentar recuperá-lo. Se a página atual não
tiver terminado de carregar, o Document ou um ou mais de seus objetos filhos podem
não ser inicializados.
Confira também
Usando o Document Object Model HTML gerenciado
Visão geral do controle WebBrowser
Como: Alterar estilos em um elemento
no Modelo de Objeto do Documento
HTML gerenciado
Artigo • 21/06/2023
Você pode usar estilos em HTML para controlar a aparência de um documento e seus
elementos. HtmlDocument e HtmlElement dão suporte Style a propriedades que têm
cadeias de caracteres de estilo do seguinte formato:
name1:value1;...;nameN:valueN;
Veja esse DIV com uma cadeia de caracteres de estilo que define a fonte como Arial e
todo o texto como negrito:
HTML
<DIV style="font-face:arial;font-weight:bold;">
Hello, world!
</DIV>
O problema com a manipulação de estilos usando a Style propriedade é que ela pode
ser complicada para adicionar e remover as configurações de estilo individuais da
cadeia de caracteres. Por exemplo, seria um procedimento complexo renderizar o texto
anterior em itálico sempre que o usuário posicionar o cursor sobre o DIV e remover o
itálico quando o cursor deixar o DIV . O tempo poderia se tornar um problema se você
precisasse manipular um grande número de estilos dessa maneira.
O procedimento a seguir contém o código que pode ser usado para manipular
facilmente os estilos em documentos e elementos HTML. O procedimento exige que
você saiba como executar tarefas básicas no Windows Forms, tal como criar um novo
projeto e adicionar um controle a um formulário.
HTML
<HTML>
<BODY>
<DIV style="font-face:arial;font-weight:bold;">
Hello, world!
</DIV><P>
<DIV>
Hello again, world!
</DIV><P>
</BODY>
</HTML>
) Importante
C#
StyleGenerator sg = null;
HtmlElement elem = null;
webBrowser1.Document.MouseOver += new
HtmlElementEventHandler(Document_MouseOver);
webBrowser1.Document.MouseLeave += new
HtmlElementEventHandler(Document_MouseLeave);
}
void Document_MouseOver(object sender, HtmlElementEventArgs e)
{
elem = webBrowser1.Document.GetElementFromPoint(e.MousePosition);
if (elem.TagName.Equals("DIV"))
{
sg.ParseStyleString(elem.Style);
sg.SetStyle("font-style", "italic");
elem.Style = sg.GetStyleString();
}
}
7. Execute o projeto. Passe o cursor pelo primeiro DIV para observar os efeitos do
código.
Exemplo
O exemplo de código a seguir mostra o código completo para a classe StyleGenerator ,
que analisa um valor de estilo existente, dá suporte à adição, alteração e remoção de
estilos e retorna um novo valor de estilo com as alterações solicitadas.
C#
using System;
using System.Collections.Generic;
using System.Text;
namespace ManagedDOMStyles
{
public class StyleGenerator
{
private Dictionary<string, string> styleDB;
public StyleGenerator()
{
styleDB = new Dictionary<string, string>();
}
if (styleDB.ContainsKey(name))
{
oldValue = styleDB[name];
}
styleDB[name] = value;
return (oldValue);
}
if (styleDB.ContainsKey(name))
{
return (styleDB[name]);
}
else
{
return ("");
}
}
return (styleString.ToString());
}
else
{
return ("");
}
}
Confira também
HtmlElement
Acessando quadros no Document
Object Model HTML gerenciado
Artigo • 02/06/2023
Alguns documentos HTML são compostos de quadros ou janelas que podem manter
seus próprios documentos HTML distintos. Usar quadros facilita a criação de páginas
HTML na qual uma ou mais partes da página permanecem estáticas, como uma barra de
navegação, enquanto outros quadros alterar seu conteúdo constantemente.
-ou-
Usando a marca IFRAME , que cria uma janela flutuante que pode ser reposicionada
em tempo de execução.
2. Quando você acessa uma FRAME ou IFRAME marca usando a coleção Frames,
HtmlWindowvocê está recuperando o elemento de janela correspondente ao
quadro. Isso representa todas as propriedades dinâmicas do quadro, como sua
URL, documento e tamanho atual.
Quadros e Segurança
O acesso aos quadros é complicado pelo fato de que o HTML DOM gerenciado
implementa uma medida de segurança, conhecida como segurança de scripts entre
quadros. Se um documento contiver um FRAMESET com duas ou mais FRAME s em
domínios diferentes, esses FRAME s não poderão interagir entre si. Em outras palavras,
um FRAME que exibe conteúdo de seu site não pode acessar informações em um FRAME
site que hospeda um site de terceiros, como http://www.adatum.com/ . Essa segurança é
implementada no nível da HtmlWindow classe. Você pode obter informações gerais
sobre uma FRAME hospedagem de outro site, como sua URL, mas não poderá acessar
Document ou alterar o tamanho ou o local de sua hospedagem FRAME ou IFRAME .
Essa regra também se aplica às janelas que você abre usando os métodos e OpenNew
os Open métodos. Se a janela aberta estiver em um domínio diferente da página
hospedada no WebBrowser controle, você não poderá mover essa janela nem examinar
seu conteúdo. Essas restrições também serão impostas se você usar o WebBrowser
controle para exibir um site diferente do site usado para implantar seu aplicativo
baseado em Windows Forms. Se você usar a tecnologia de implantação do ClickOnce
para instalar seu aplicativo do site A e usar o WebBrowser site B para exibição, não
poderá acessar os dados do site B.
Confira também
<elemento frame>
Usando o Document Object Model HTML gerenciado
Acessando membros não expostos no
Document Object Model HTML
gerenciado
Artigo • 02/06/2023
SetAttribute
Métodos InvokeMember
DetachEventHandler
DetachEventHandler
DetachEventHandler
HTML
<HTML>
<HEAD>
<TITLE>Form Page</TITLE>
</HEAD>
<BODY>
<FORM ID="form1">
... form fields defined here ...
</FORM>
</BODY>
</HTML>
C#
if (webBrowser1.Document != null)
{
HtmlDocument doc = webBrowser1.Document;
elems = doc.All.GetElementsByName(formName);
if (elems != null && elems.Count > 0)
{
elem = elems[0];
if (elem.TagName.Equals("FORM"))
{
elem.InvokeMember("Submit");
}
}
}
}
A tabela a seguir mostra todas as interfaces não gerenciadas expostas por meio do
HTML DOM gerenciado. Clique em cada link para obter uma explicação de seu uso e
exemplos de código.
HtmlDocument DomDocument
HtmlElement DomElement
HtmlWindow DomWindow
HtmlHistory DomHistory
A maneira mais fácil de usar as interfaces COM é adicionar uma referência à biblioteca
de HTML DOM não gerenciada (MSHTML.dll) por meio do aplicativo, embora não haja
suporte para isso.
Você pode chamar todas as funções de script definidas em uma página HTML usando o
InvokeScript método. Se o método script retornar um elemento HTML, você poderá usar
uma conversão para converter esse resultado de retorno em um HtmlElement. Para
obter detalhes e código de exemplo, consulte InvokeScript.
Confira também
Usando o Document Object Model HTML gerenciado
Controles dos Windows Forms usados
para listar opções
Artigo • 02/06/2023
Você pode adicionar uma variedade de controles a um Windows Form para fornecer aos
usuários uma lista de opções de escolha. Dependendo do quanto você deseja restringir
a entrada dos usuários, você pode adicionar um ListBox controle, um ComboBox
controle ou um CheckedListBox controle. Use os links a seguir para determinar qual
controle atende mais bem às suas necessidades.
Nesta seção
Quando usar um ComboBox dos Windows Forms em vez de um ListBox
Recomenda um controle baseado em lista apropriado dependendo das necessidades e
restrições do seu Windows Form.
Referência
CheckedListBox
Descreve essa classe e tem links para todos os seus membros.
ComboBox
Descreve essa classe e tem links para todos os seus membros.
ListBox
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Visão geral do controle CheckedListBox
Explica o que é esse controle e seus principais recursos e propriedades.
Em geral, uma caixa de combinação é apropriada quando há uma lista das opções
sugeridas e uma caixa de listagem é apropriada quando você deseja limitar a entrada
para o que está na lista. Uma caixa de combinação contém um campo de caixa de texto,
portanto, as opções que não estão na lista podem ser digitadas. A exceção é quando a
DropDownStyle propriedade é definida como DropDownList . Nesse caso, o controle
selecionará um item se você digitar sua primeira letra.
Confira também
ComboBox
ListBox
Como: Adicionar e remover itens de um controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Como: Classificar o conteúdo de um controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Controles dos Windows Forms usados para listar opções
Como: Acessar itens específicos em um
controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Artigo • 02/06/2023
C#
Confira também
ComboBox
ListBox
CheckedListBox
Controles dos Windows Forms usados para listar opções
Como: Adicionar e remover itens de um
controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Artigo • 02/06/2023
Itens podem ser adicionados a uma caixa de combinação dos Windows Forms, caixa de
listagem ou caixa de listagem marcada de várias maneiras, porque esses controles
podem ser vinculados a uma variedade de fontes de dados. No entanto, este tópico
demonstra o método mais simples e não requer nenhuma vinculação de dados.
Normalmente, os itens exibidos são cadeias de caracteres; No entanto, qualquer objeto
pode ser usado. O texto que é exibido no controle é o valor retornado pelo método do
ToString objeto.
C#
comboBox1.Items.Add("Tokyo");
ou –
C#
checkedListBox1.Items.Insert(0, "Copenhagen");
ou –
C#
C#
C#
listBox1.Items.Clear();
Confira também
ComboBox
ListBox
CheckedListBox
Como: Classificar o conteúdo de um controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Quando usar um ComboBox dos Windows Forms em vez de um ListBox
Controles dos Windows Forms usados para listar opções
Como: Criar uma tabela de pesquisa
para um controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Artigo • 02/06/2023
OrderDetailsTable
4085 12 1
4086 13 3
ItemTable
ID Nome
12 Batata
13 Frango
Nesse cenário, uma tabela, OrderDetailsTable, armazena as informações reais que serão
exibidas e salvas. Porém, para economizar espaço, isso é feito de maneira bastante
enigmática. A outra tabela, ItemTable, contém apenas informações relacionadas à
aparência sobre qual número de ID é equivalente a qual nome de alimento, e nada
sobre os pedidos de alimentos.
Propriedade Configuração
C#
listBox1.DataBindings.Add("SelectedValue", OrderDetailsTable,
"ItemID");
Confira também
Associação de dados e o Windows Forms
Visão geral do controle ListBox
Visão geral do controle ComboBox
Visão geral do controle CheckedListBox
Controles dos Windows Forms usados para listar opções
Como: Associar um controle ComboBox
ou ListBox do Windows Forms aos
dados
Artigo • 02/06/2023
Você pode vincular o ComboBox e ListBox aos dados para executar tarefas como
navegação de dados em um banco de dados, inserção de novos dados ou edição de
dados existentes.
- ou -
C#
7 Observação
Confira também
ComboBox
ListBox
Associação de dados do Windows Forms
Associação de dados e o Windows Forms
Controles dos Windows Forms usados para listar opções
Como: Classificar o conteúdo de um
controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Artigo • 02/06/2023
Windows Forms controles não classificam quando estão associados a dados. Para exibir
dados classificados, use uma fonte de dados que dê suporte à classificação e, em
seguida, classifique-os na fonte de dados. As fontes de dados que dão suporte à
classificação são exibições de dados, gerenciadores de exibição de dados e matrizes
classificadas.
Confira também
ComboBox
ListBox
CheckedListBox
Associação de dados do Windows Forms
Como: Adicionar e remover itens de um controle ComboBox, ListBox ou
CheckedListBox do Windows Forms
Quando usar um ComboBox dos Windows Forms em vez de um ListBox
Controles dos Windows Forms usados para listar opções
Desenvolvendo controles dos Windows
Forms personalizados com o .NET
Framework
Artigo • 02/06/2023
Nesta seção
Visão geral do uso de controles nos Windows Forms
Destaca os elementos essenciais do uso de controles em aplicativos do Windows Forms.
Referência
System.Windows.Forms.Control
Descreve essa classe e tem links para todos os seus membros.
System.Windows.Forms.UserControl
Descreve essa classe e tem links para todos os seus membros.
Seções relacionadas
Atributos em tempo de design para componentes
Lista atributos de metadados para aplicar a componentes e controles para que eles
sejam exibidos corretamente em tempo de design em designers visuais.
Um Main método que invoca o static método ( shared no Visual Basic) Run e
passa uma Form instância para ele. O Run método processa mensagens do sistema
operacional para o aplicativo.
C#
using System;
using System.Windows.Forms;
public MyForm() {
this.Text = "Hello World";
}
[STAThread]
public static void Main(string[] args) {
MyForm aform = new MyForm();
// The Application.Run method processes messages from the operating system
// to your application. If you comment out the next line of code,
// your application will compile and execute, but because it is not in the
// message loop, it will exit after an instance of the form is created.
Application.Run(aform);
}
}
Uso de controles em um aplicativo dos
Windows Forms
O exemplo de código a seguir mostra um aplicativo simples que ilustra como os
aplicativos dos Windows Forms usam controles e manipulam eventos. O exemplo
consiste em três botões em um formulário; cada botão altera a cor da tela de fundo
quando clicado.
C#
using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Resources;
using System.Drawing;
// Event handler.
private void button_Click(object sender, EventArgs e) {
if (sender == red) this.BackColor = Color.Red ;
else if (sender == blue) this.BackColor = Color.Blue;
else this.BackColor = Color.Green;
}
// The STAThreadAttribute informs the common language runtime that
// Windows Forms uses the single-threaded apartment model.
[STAThread]
public static void Main(string[] args) {
Application.Run(new MyForm());
}
Confira também
Desenvolvendo controles dos Windows Forms personalizados com o .NET
Framework
Noções básicas sobre o desenvolvimento de controle dos Windows Forms
Variedades de controles personalizados
Artigo • 02/06/2023
Com o .NET Framework, você pode desenvolver e implementar novos controles. Você
pode estender a funcionalidade do controle de usuário familiar, além dos controles
existentes, por herança. Você também pode escrever controles personalizados que
executam suas próprias pinturas.
Decidir qual tipo de controle criar pode ser confuso. Este tópico destaca as diferenças
entre os vários tipos de controles dos quais você pode herdar e fornece informações
sobre como escolher um tipo específico de controle para seu projeto.
7 Observação
Para obter informações sobre a criação de um controle para usar no Web Forms,
consulte Desenvolvendo controles de servidores ASP.NET personalizados.
A Control classe executa as seguintes tarefas para fornecer exibição visual em aplicativos
Windows Forms:
Como grande parte da infraestrutura é fornecida pela classe base, é relativamente fácil
desenvolver seus próprios controles dos Windows Forms.
Tipos de controles
O Windows Forms dá suporte a três tipos de controles definidos pelo usuário:
composição, estendido e personalizado. As seções a seguir descrevem cada tipo de
controle e fornecem recomendações para escolher o tipo para usar em seus projetos.
Controles de composição
Um controle de composição é uma coleção de controles dos Windows Forms
encapsulados em um contêiner comum. Esse tipo de controle é, às vezes, chamado de
controle de usuário. Os controles contidos são chamados controles constituintes.
Por exemplo, um controle de composição poderia ser criado para exibir dados de
endereço de cliente de um banco de dados. Esse controle pode incluir um DataGridView
controle para exibir os campos de banco de dados, uma BindingSource associação para
lidar com uma fonte de dados e um BindingNavigator controle para se mover pelos
registros. Você pode expor seletivamente propriedades de vinculação de dados, além de
poder empacotar e reutilizar todo o controle do aplicativo para o aplicativo. Para obter
um exemplo desse tipo de controle de composição, consulte Como aplicar atributos em
controles dos Windows Forms.
Recomendação
Controles estendidos
Você pode derivar um controle herdado de qualquer controle Windows Forms existente.
Com essa abordagem, você pode reter todas as funcionalidades inerentes de um
controle Windows Forms e estender essa funcionalidade adicionando propriedades
personalizadas, métodos ou outros recursos. Com essa opção, você pode substituir a
lógica de pintura do controle base e estender a interface do usuário alterando sua
aparência.
Por exemplo, você pode criar um controle derivado do Button controle que rastreia
quantas vezes um usuário clicou nele.
Recomendação
Você não precisa de uma interface gráfica do usuário personalizada ou deseja criar
uma nova interface gráfica do usuário para um controle existente.
Controles personalizados
Outra maneira de criar um controle é criar um substancialmente desde o início
herdando de Control. A Control classe fornece todas as funcionalidades básicas exigidas
pelos controles, incluindo eventos de manipulação de mouse e teclado, mas nenhuma
funcionalidade específica de controle ou interface gráfica.
Criar um controle herdando da Control classe requer muito mais pensamento e esforço
do que herdar ou UserControl um controle Windows Forms existente. Como uma
grande quantidade de implementação é deixada para você, o controle pode ter maior
flexibilidade do que um controle de composição ou estendido e você pode personalizar
o controle para atender às suas necessidades.
Para implementar um controle personalizado, você deve escrever código para o OnPaint
evento do controle, bem como qualquer código específico do recurso necessário. Você
também pode substituir o WndProc método e manipular mensagens do Windows
diretamente. Essa é a maneira mais eficiente para criar um controle, mas, para usar essa
técnica com eficiência, você precisa estar familiarizado com a API do Win32® da
Microsoft.
Recomendação
Controles ActiveX
Embora a infraestrutura dos Windows Forms tenha sido otimizada para hospedar
controles dos Windows Forms, você ainda poderá usar controles ActiveX. Há suporte
para esta tarefa no Visual Studio. Para mais informações, consulte Como adicionar
controles ActiveX ao Windows Forms.
Use o DesignerAttribute para associar seu controle ao designer. Para obter mais
informações, consulte Estendendo o suporte em tempo de design e Como criar um
controle dos Windows Forms que aproveita os recursos de tempo de design.
Confira também
Desenvolvendo controles dos Windows Forms personalizados com o .NET
Framework
Como: Desenvolver um controle simples do Windows Forms
Desenvolvendo um controle dos Windows Forms composto
Estendendo o suporte para tempo de design
Como criar um controle dos Windows Forms que aproveita recursos de tempo de
design
Recomendações do tipo de controle
Artigo • 02/06/2023
7 Observação
Caso queira criar um controle para usar no Web Forms, consulte Desenvolvendo
Controles de Servidores ASP.NET Personalizados.
Você não precisa de uma interface gráfica personalizada ou deseja criar um novo
front-end gráfico para um controle existente.
Artigos relacionados
Como exibir um controle na caixa de diálogo Escolher Itens da Caixa de
Ferramentas
Passo a passo: serializando coleções de tipos padrão com
DesignerSerializationVisibilityAttribute
Como criar um controle dos Windows Forms que aproveita recursos de tempo de
design
Confira também
Como: Desenvolver um controle simples do Windows Forms
Variedades de controles personalizados
Noções básicas sobre o
desenvolvimento de controle dos
Windows Forms
Artigo • 02/06/2023
Um botão cuja cor não pode ser alterado e um botão que tem uma propriedade
adicional que controla quantas vezes ele foi clicado são exemplos de controles
estendidos. Você pode personalizar qualquer controle do Windows Forms
derivado dele e substituir ou adicionar propriedades, métodos e eventos.
Nesse cenário, derive seu controle da classe Controlbase. Você pode adicionar e
substituir propriedades, métodos e eventos da classe base. Para começar, consulte
Como desenvolver um controle simples do Windows Forms.
Confira também
Como: Desenvolver um controle simples do Windows Forms
Desenvolvendo um controle dos Windows Forms composto
Como: Criar um controle do Windows Forms que mostre o progresso
Variedades de controles personalizados
Como: Desenvolver um controle simples
do Windows Forms
Artigo • 02/06/2023
Esta seção explica as etapas principais para a criação de um controle personalizado dos
Windows Forms. O controle simples desenvolvido neste passo a passo permite que o
alinhamento de sua Text propriedade seja alterado. Ele não gera ou manipula eventos.
C#
C#
Ao definir uma propriedade que altera a exibição visual do controle, você deve
invocar o Invalidate método para redesenhar o controle. Invalidate é definido na
classe Controlbase.
C#
[
Category("Alignment"),
Description("Specifies the alignment of text.")
]
5. (opcional) Forneça recursos para o seu controle. Você pode fornecer um recurso,
como um bitmap, para seu controle usando uma opção do compilador ( /res para
C#) para recursos de pacote com seu controle. Em tempo de execução, o recurso
pode ser recuperado usando os métodos da ResourceManager classe. Para obter
mais informações sobre a criação e o uso de recursos, consulte Resources in
Desktop Apps (Recursos em aplicativos da Área de Trabalho).
Console
Console
C#
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace CustomWinControls
{
public class FirstControl : Control
{
public FirstControl()
{
}
[
Category("Alignment"),
Description("Specifies the alignment of text.")
]
public ContentAlignment TextAlignment
{
get
{
return alignmentValue;
}
set
{
alignmentValue = value;
Console
Console
SimpleForm
C#
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace CustomWinControls
{
public SimpleForm()
{
InitializeComponent();
}
//
// firstControl1
//
this.firstControl1.BackColor =
System.Drawing.SystemColors.ControlDark;
this.firstControl1.Location = new System.Drawing.Point(96, 104);
this.firstControl1.Name = "firstControl1";
this.firstControl1.Size = new System.Drawing.Size(75, 16);
this.firstControl1.TabIndex = 0;
this.firstControl1.Text = "Hello World";
this.firstControl1.TextAlignment =
System.Drawing.ContentAlignment.MiddleCenter;
//
// SimpleForm
//
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.firstControl1);
this.Name = "SimpleForm";
this.Text = "SimpleForm";
this.ResumeLayout(false);
}
[STAThread]
static void Main()
{
Application.Run(new SimpleForm());
}
}
}
Confira também
Propriedades em controles dos Windows Forms
Eventos em controles dos Windows Forms
Como: Criar um controle do Windows
Forms que mostre o progresso
Artigo • 02/06/2023
Propriedade Descrição
ShowValue Indica se o valor atual deve ser exibido com relação ao gradiente.
Membro DESCRIÇÃO
7 Observação
OnPaint
OnMouseDown
OnMouseMove
OnMouseUp
OnResize
OnBackColorChanged
OnBackgroundImageChanged
OnTextChanged
Exemplo
O controle FlashTrackBar define dois editores de tipo de interface do usuário,
FlashTrackBarValueEditor e FlashTrackBarDarkenByEditor , que são mostrados nas
C#
namespace Microsoft.Samples.WinForms.Cs.FlashTrackBar {
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Diagnostics;
public FlashTrackBar() {
//
// Required for Windows Form Designer support
//
InitializeComponent();
SetStyle(ControlStyles.Opaque, true);
SetStyle(ControlStyles.ResizeRedraw, true);
Debug.Assert(GetStyle(ControlStyles.ResizeRedraw), "Should be
redraw!");
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent () {
this.components = new System.ComponentModel.Container ();
this.ForeColor = System.Drawing.Color.White;
this.BackColor = System.Drawing.Color.Black;
this.Size = new System.Drawing.Size(100, 23);
this.Text = "FlashTrackBar";
}
[
Category("Flash"),
DefaultValue(true)
]
public bool AllowUserEdit {
get {
return allowUserEdit;
}
set {
if (value != allowUserEdit) {
allowUserEdit = value;
if (!allowUserEdit) {
Capture = false;
dragging = false;
}
}
}
}
[
Category("Flash")
]
public Color EndColor {
get {
return endColor;
}
set {
endColor = value;
if (baseBackground != null && showGradient) {
baseBackground.Dispose();
baseBackground = null;
}
Invalidate();
}
}
[
Category("Flash"),
Editor(typeof(FlashTrackBarDarkenByEditor),
typeof(UITypeEditor)),
DefaultValue((byte)200)
]
public byte DarkenBy {
get {
return darkenBy;
}
set {
if (value != darkenBy) {
darkenBy = value;
if (backgroundDim != null) {
backgroundDim.Dispose();
backgroundDim = null;
}
OptimizedInvalidate(Value, max);
}
}
}
[
Category("Flash"),
DefaultValue(100)
]
public int Max {
get {
return max;
}
set {
if (max != value) {
max = value;
Invalidate();
}
}
}
[
Category("Flash"),
DefaultValue(0)
]
public int Min {
get {
return min;
}
set {
if (min != value) {
min = value;
Invalidate();
}
}
}
[
Category("Flash")
]
public Color StartColor {
get {
return startColor;
}
set {
startColor = value;
if (baseBackground != null && showGradient) {
baseBackground.Dispose();
baseBackground = null;
}
Invalidate();
}
}
[
Category("Flash"),
RefreshProperties(RefreshProperties.Repaint),
DefaultValue(false)
]
public bool ShowPercentage {
get {
return showPercentage;
}
set {
if (value != showPercentage) {
showPercentage = value;
if (showPercentage) {
showValue = false;
}
Invalidate();
}
}
}
[
Category("Flash"),
RefreshProperties(RefreshProperties.Repaint),
DefaultValue(false)
]
public bool ShowValue {
get {
return showValue;
}
set {
if (value != showValue) {
showValue = value;
if (showValue) {
showPercentage = false;
}
Invalidate();
}
}
}
[
Category("Flash"),
DefaultValue(true)
]
public bool ShowGradient {
get {
return showGradient;
}
set {
if (value != showGradient) {
showGradient = value;
if (baseBackground != null) {
baseBackground.Dispose();
baseBackground = null;
}
Invalidate();
}
}
}
[
Category("Flash"),
Editor(typeof(FlashTrackBarValueEditor), typeof(UITypeEditor)),
DefaultValue(0)
]
public int Value {
get {
if (dragging) {
return dragValue;
}
return value;
}
set {
if (value != this.value) {
int old = this.value;
this.value = value;
OnValueChanged(EventArgs.Empty);
OptimizedInvalidate(old, this.value);
}
}
}
// ValueChanged Event
[Description("Raised when the Value displayed changes")]
public event EventHandler ValueChanged {
add {
onValueChanged += value;
}
remove {
onValueChanged -= value;
}
}
Invalidate(invalid);
string oldToDisplay;
string newToDisplay;
if (ShowPercentage) {
oldToDisplay = Convert.ToString((int)(oldPercentValue *
100f)) + "%";
newToDisplay = Convert.ToString((int)(newPercentValue *
100f)) + "%";
}
else if (ShowValue) {
oldToDisplay = Convert.ToString(oldValue);
newToDisplay = Convert.ToString(newValue);
}
else {
oldToDisplay = null;
newToDisplay = null;
}
Invalidate(new Rectangle((int)oldFontRect.X,
(int)oldFontRect.Y, (int)oldFontRect.Width, (int)oldFontRect.Height));
Invalidate(new Rectangle((int)newFontRect.X,
(int)newFontRect.Y, (int)newFontRect.Width, (int)newFontRect.Height));
}
}
base.OnPaint(e);
if (baseBackground == null) {
if (showGradient) {
baseBackground = new LinearGradientBrush(new Point(0,
0),
new
Point(ClientSize.Width, 0),
StartColor,
EndColor);
}
else if (BackgroundImage != null) {
baseBackground = new TextureBrush(BackgroundImage);
}
else {
baseBackground = new SolidBrush(BackColor);
}
}
if (ShowPercentage) {
toDisplay = Convert.ToString((int)(percentValue * 100f))
+ "%";
}
else if (ShowValue) {
toDisplay = Convert.ToString(Value);
}
else {
toDisplay = text;
}
e.Graphics.FillRectangle(baseBackground, ClientRectangle);
e.Graphics.FillRectangle(backgroundDim, toDim);
e.Graphics.Flush();
if (toDisplay != null && toDisplay.Length > 0) {
e.Graphics.DrawString(toDisplay, Font, new
SolidBrush(ForeColor), textRect);
}
}
if (client.Contains(mouseLocation)) {
float percentage = (float)mouseLocation.X /
(float)ClientRectangle.Width;
int newDragValue = (int)(percentage * (float)(max - min));
if (newDragValue != dragValue) {
int old = dragValue;
dragValue = newDragValue;
OptimizedInvalidate(old, dragValue);
}
}
else {
if (client.Y <= mouseLocation.Y && mouseLocation.Y <=
client.Y + client.Height) {
if (mouseLocation.X <= client.X && mouseLocation.X >
client.X - LeftRightBorder) {
int newDragValue = min;
if (newDragValue != dragValue) {
int old = dragValue;
dragValue = newDragValue;
OptimizedInvalidate(old, dragValue);
}
}
else if (mouseLocation.X >= client.X + client.Width &&
mouseLocation.X < client.X + client.Width + LeftRightBorder) {
int newDragValue = max;
if (newDragValue != dragValue) {
int old = dragValue;
dragValue = newDragValue;
OptimizedInvalidate(old, dragValue);
}
}
}
else {
if (dragValue != value) {
int old = dragValue;
dragValue = value;
OptimizedInvalidate(old, dragValue);
}
}
}
}
}
}
C#
namespace Microsoft.Samples.WinForms.Cs.FlashTrackBar {
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.ComponentModel;
using System.Windows.Forms.Design;
C#
namespace Microsoft.Samples.WinForms.Cs.FlashTrackBar {
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.ComponentModel;
using System.Windows.Forms.Design;
if (context != null
&& context.Instance != null
&& provider != null) {
edSvc =
(IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorSe
rvice));
if (edSvc != null) {
FlashTrackBar trackBar = new FlashTrackBar();
trackBar.ValueChanged += new
EventHandler(this.ValueChanged);
SetEditorProps((FlashTrackBar)context.Instance,
trackBar);
bool asInt = true;
if (value is int) {
trackBar.Value = (int)value;
}
else if (value is byte) {
asInt = false;
trackBar.Value = (byte)value;
}
edSvc.DropDownControl(trackBar);
if (asInt) {
value = trackBar.Value;
}
else {
value = (byte)trackBar.Value;
}
}
}
return value;
}
C#
namespace Microsoft.Samples.WinForms.Cs.HostApp {
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.Samples.WinForms.Cs.FlashTrackBar;
public HostApp() {
//
// Required for Windows Form Designer support
//
InitializeComponent();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose(bool disposing)
{
if (disposing) {
if (components != null) {
components.Dispose();
}
}
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
this.components = new System.ComponentModel.Container ();
this.flashTrackBar1 = new
Microsoft.Samples.WinForms.Cs.FlashTrackBar.FlashTrackBar ();
this.Text = "Control Example";
this.ClientSize = new System.Drawing.Size (600, 450);
flashTrackBar1.BackColor = System.Drawing.Color.Black;
flashTrackBar1.Dock = System.Windows.Forms.DockStyle.Fill;
flashTrackBar1.TabIndex = 0;
flashTrackBar1.ForeColor = System.Drawing.Color.White;
flashTrackBar1.Text = "Drag the Mouse and say Wow!";
flashTrackBar1.Value = 73;
flashTrackBar1.Size = new System.Drawing.Size (600, 450);
this.Controls.Add (this.flashTrackBar1);
}
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
public static void Main(string[] args) {
Application.Run(new HostApp());
}
}
}
Confira também
Estendendo o suporte para tempo de design
Noções básicas sobre o desenvolvimento de controle dos Windows Forms
Desenvolver um controle de Windows
Forms composto
Artigo • 21/06/2023
Instruções passo a passo: herdando um controle dos Windows Forms com Visual
C#
Como criar um controle dos Windows Forms que aproveita recursos de tempo de
design
Confira também
Como: Aplicar atributos a controles do Windows Forms
Desenvolvendo controles dos Windows Forms personalizados com o .NET
Framework
Variedades de controles personalizados
Propriedades em controles dos
Windows Forms
Artigo • 02/06/2023
Você pode substituir as propriedades herdadas em seu controle, bem como definir
novas propriedades.
Nesta seção
Definir uma propriedade
Mostra como implementar uma propriedade para um controle personalizado ou
componente e mostra como integrar a propriedade ambiente no de design.
Referência
UserControl
Documenta a classe base para implementar controles de composição.
TypeConverterAttribute
Documenta o atributo que especifica o TypeConverter a ser usado para um tipo de
propriedade personalizado.
EditorAttribute
Documenta o atributo que especifica o UITypeEditor a ser usado para uma propriedade
personalizada.
Seções relacionadas
Atributos em controles dos Windows Forms
Descreve os atributos que você pode aplicar a propriedades ou outros membros de
seus componentes e controles personalizados.
Para obter uma visão geral das propriedades, consulte Visão geral das propriedades. Há
algumas considerações importantes ao definir uma propriedade:
Você deve aplicar atributos às propriedades que você definir. Atributos especificam
como o designer deve exibir uma propriedade. Para obter detalhes, consulte
Atributos de tempo de design para componentes.
7 Observação
C#
[
Category("Flash"),
TypeConverter(typeof(FlashTrackBarValueConverter)),
Editor(typeof(FlashTrackBarValueEditor), typeof(UITypeEditor)),
Description("The current value of the track bar. You can enter an actual
value or a percentage.")
]
public int Value {
...
}
Confira também
Propriedades em controles dos Windows Forms
Definindo valores padrão com o ShouldSerialize e os métodos de redefinição
Eventos com propriedade alterada
Atributos em controles dos Windows Forms
Definindo valores padrão com o
ShouldSerialize e os métodos de
redefinição
Artigo • 02/06/2023
ShouldSerialize e Reset são métodos opcionais que você pode fornecer para uma
7 Observação
O método Reset PropertyName define uma propriedade para o valor padrão, conforme
mostrado no seguinte fragmento de código.
C#
7 Observação
Se uma Reset propriedade não tiver um método , DefaultValueAttributenão
estiver marcada com um e não tiver um valor padrão fornecido em sua declaração,
Reset a opção para essa propriedade será desabilitada no menu de atalho da
C#
Dica
C#
using System;
using System.Drawing;
using System.Windows.Forms;
Nesse caso, MyFont null mesmo quando o valor da variável privada acessada pela
propriedade for , null o navegador de propriedade não exibirá ; em vez disso, Font ele
exibirá a propriedade do pai, null se não for , Font ou o valor padrão definido em
Control. Portanto, o valor padrão para MyFont não pode ser simplesmente definido e
um DefaultValueAttribute não pode ser aplicado a essa propriedade. Em vez disso, os
métodos ShouldSerialize e Reset devem ser implementados para a propriedade
MyFont .
Confira também
Propriedades em controles dos Windows Forms
Definir uma propriedade
Eventos com propriedade alterada
System.ComponentModel.DesignerSerializationVisibilityAttribute
Eventos com propriedade alterada
Artigo • 21/06/2023
Se você quiser que o controle envie notificações quando uma propriedade chamada
PropertyName mudar, defina um evento chamado PropertyName Changed e um método
chamado On PropertyName Changed que gera o evento. A convenção de nomenclatura
nos Windows Forms é acrescentar a palavra Changed ao nome da propriedade. O tipo
de delegado de evento associado para eventos alterados por propriedade é
EventHandlere o tipo de dados de evento é EventArgs. A classe Control base define
muitos eventos alterados por propriedade, como BackColorChanged,
BackgroundImageChanged, FontChanged, LocationChangede outros. Para obter
informações secundárias sobre eventos, consulte Eventos e Eventos em controles dos
Windows Forms.
C#
C#
Confira também
UserControl
Propriedades em controles dos Windows Forms
Variedades de controles personalizados
Implementação do método em
controles personalizados
Artigo • 02/06/2023
VB
Como funções retornam um valor, devem especificar um tipo de retorno, como inteiro,
cadeia de caracteres, objeto e assim por diante. Os argumentos Function ou Sub que os
procedimentos tomam, quando houver, também devem ser especificados.
C#
automaticamente.
7 Observação
C#
Confira também
Eventos
Propriedades em controles dos Windows Forms
Eventos em controles dos Windows
Forms
Artigo • 21/06/2023
Confira também
Substituindo o método OnPaint
Identificando a entrada do usuário
Definir um evento
Eventos
Substituindo o método OnPaint
Artigo • 21/06/2023
As etapas básicas para substituir qualquer evento definido no .NET Framework são
idênticas e resumidas na lista a seguir.
O Paint evento é discutido em detalhes aqui porque cada controle Windows Forms deve
substituir o Paint evento que herda de Control. A classe base Control não sabe como um
controle derivado precisa ser desenhado e não fornece nenhuma lógica de pintura no
OnPaint método . O OnPaint método de Control simplesmente despacha o Paint evento
para receptores de eventos registrados.
C#
A PaintEventArgs classe contém dados para o Paint evento. Ele tem duas propriedades,
conforme mostrado no código a seguir.
C#
Um controle invoca seu OnPaint método sempre que precisa alterar sua exibição visual.
Esse método, por sua vez, aciona o Paint evento.
Confira também
Eventos
Renderizando um controle dos Windows Forms
Definir um evento
Identificando a entrada do usuário
Artigo • 02/06/2023
7 Observação
Eventos de teclado
Os eventos comuns de teclado que o controle pode manipular são KeyDown, KeyPresse
KeyUp.
KeyPress void OnKeyPress Gerado sempre que uma tecla é pressionada. Se uma
chave for mantida pressionada, um KeyPress evento será
(KeyPressEventArgs) gerado na taxa de repetição definida pelo sistema
operacional.
7 Observação
Eventos de mouse
Os eventos do mouse que seu controle pode manipular sãoMouseDown, , ,
MouseHover, MouseLeavee MouseUpMouseMove. MouseEnter
C#
C#
C#
Para ver o código-fonte completo para o exemplo FlashTrackBar , consulte Como criar
um controle do Windows Forms que mostra o progresso.
Confira também
Eventos em controles dos Windows Forms
Definir um evento
Eventos
Entrada do usuário no Windows Forms
Definindo um evento em controles dos
Windows Forms
Artigo • 02/06/2023
Para obter detalhes sobre como definir eventos personalizados, consulte Eventos. Se
você definir um evento que não tenha dados associados, use o tipo de base para dados
de eventos, EventArgs e use EventHandler como o delegado do evento. Tudo o que
resta fazer é definir um membro do evento e um método EventName protegido On que
gera o evento.
mostra o progresso.
C#
using System;
using System.Windows.Forms;
using System.Drawing;
O .NET Framework fornece uma variedade de atributos que podem se aplicados aos
membros de seus controles personalizados e componentes. Alguns desses atributos
afetam o comportamento de uma classe no tempo de execução, enquanto outros
afetam o comportamento no tempo de design.
Atributo Descrição
EditorAttribute Especifica o editor que deve ser usado para alterar uma
propriedade.
Atributo Descrição
Confira também
Attribute
Como: Aplicar atributos a controles do Windows Forms
Estendendo o suporte para tempo de design
Desenvolvendo controles dos Windows Forms personalizados com o .NET
Framework
Como: Aplicar atributos a controles do
Windows Forms
Artigo • 17/06/2023
U Cuidado
Este conteúdo foi escrito para .NET Framework. Se você estiver usando o .NET 6 ou
uma versão posterior, use esse conteúdo com cuidado. O sistema de designer foi
alterado para Windows Forms e é importante que você examine as alterações de
Designer desde .NET Framework artigo.
Exemplo
O exemplo de código a seguir demonstra como usar vários atributos em um controle
personalizado. O controle demonstra um recurso de funcionalidade em log simples.
Quando o controle está associado a uma fonte de dados, ele exibe os valores enviados
pela fonte de dados em um DataGridView controle. Se um valor exceder o valor
especificado pela propriedade Threshold , um evento ThresholdExceeded será gerado.
C#
7 Observação
Como LogEntry é parametrizado por um tipo arbitrário, ele deve usar a reflexão
para operar no tipo de parâmetro. Para que o recurso de limite funcione, o tipo T
de parâmetro deve implementar a IComparable interface .
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Drawing;
using System.Data;
using System.Reflection;
using System.Text;
using System.Windows.Forms;
// Default constructor.
public AttributesDemoControl()
{
InitializeComponent();
}
[Category("Appearance")]
[Description("The title of the log data.")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Localizable(true)]
[HelpKeywordAttribute("AttributesDemoControlLibrary.AttributesDemoControl.Ti
tleText")]
public string TitleText
{
get
{
return this.label1.Text;
}
set
{
this.label1.Text = value;
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public override string Text
{
get
{
throw new NotSupportedException();
}
set
{
throw new NotSupportedException();
}
}
[AmbientValue(typeof(Color), "Empty")]
[Category("Appearance")]
[DefaultValue(typeof(Color), "White")]
[Description("The color used for painting alert text.")]
public Color AlertForeColor
{
get
{
if (this.alertForeColorValue == Color.Empty &&
this.Parent != null)
{
return Parent.ForeColor;
}
return this.alertForeColorValue;
}
set
{
this.alertForeColorValue = value;
}
}
[AmbientValue(typeof(Color), "Empty")]
[Category("Appearance")]
[DefaultValue(typeof(Color), "Red")]
[Description("The background color for painting alert text.")]
public Color AlertBackColor
{
get
{
if (this.alertBackColorValue == Color.Empty &&
this.Parent != null)
{
return Parent.BackColor;
}
return this.alertBackColorValue;
}
set
{
this.alertBackColorValue = value;
}
}
[Category("Data")]
[Description("Indicates the source of data for the control.")]
[RefreshProperties(RefreshProperties.Repaint)]
[AttributeProvider(typeof(IListSource))]
public object DataSource
{
get
{
return this.dataGridView1.DataSource;
}
set
{
this.dataGridView1.DataSource = value;
}
}
[Category("Data")]
[Description("Indicates a sub-list of the data source to show in the
control.")]
public string DataMember
{
get
{
return this.dataGridView1.DataMember;
}
set
{
this.dataGridView1.DataMember = value;
}
}
set
{
}
}
[Category("Behavior")]
[Description("The value above which the ThresholdExceeded event will
be raised.")]
public object Threshold
{
get
{
return this.thresholdValue;
}
set
{
this.thresholdValue = value;
}
}
#region Implementation
if (this.thresholdValue != null)
{
// Get the type of the log entry.
object val = e.Value;
Type paramType = val.GetType();
System.Globalization.CultureInfo.InvariantCulture);
ThresholdExceededEventArgs teea =
new ThresholdExceededEventArgs(
this.thresholdValue,
e.Value);
this.ThresholdExceeded(teea);
}
}
}
}
}
catch (Exception ex)
{
Trace.WriteLine(ex.Message);
}
}
#endregion
}
public ThresholdExceededEventArgs(
object thresholdValue,
object exceedingValue)
{
this.thresholdValue = thresholdValue;
this.exceedingValue = exceedingValue;
}
public LogEntry(
T value,
DateTime time)
{
this.entryValue = value;
this.entryTimeValue = time;
}
public T Entry
{
get
{
return this.entryValue;
}
}
string stringRepresentation =
String.Format("{0} | {1}",
le.Entry,
le.EntryTime);
return stringRepresentation;
}
C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;
using AttributesDemoControlLibrary;
this.ReportStatus( msg );
}
this.ReportStatus(msg);
}
private void startButton_Click(object sender, EventArgs e)
{
this.ReportStatus(DateTime.Now + ": Starting");
this.timer1.Start();
}
this.timer1.Stop();
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
((System.ComponentModel.ISupportInitialize)
(this.numericUpDown1)).BeginInit();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// performanceCounter1
//
this.performanceCounter1.CategoryName = ".NET CLR Memory";
this.performanceCounter1.CounterName = "Gen 0 heap size";
this.performanceCounter1.InstanceName = "_Global_";
//
// startButton
//
this.startButton.Location = new System.Drawing.Point(31, 25);
this.startButton.Name = "startButton";
this.startButton.TabIndex = 1;
this.startButton.Text = "Start";
this.startButton.Click += new
System.EventHandler(this.startButton_Click);
//
// stopButton
//
this.stopButton.Location = new System.Drawing.Point(112, 25);
this.stopButton.Name = "stopButton";
this.stopButton.TabIndex = 2;
this.stopButton.Text = "Stop";
this.stopButton.Click += new
System.EventHandler(this.stopButton_Click);
//
// timer1
//
this.timer1.Interval = 1000;
this.timer1.SynchronizingObject = this;
this.timer1.Elapsed += new
System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
//
// statusStripPanel1
//
this.statusStripPanel1.BorderStyle =
System.Windows.Forms.Border3DStyle.SunkenOuter;
this.statusStripPanel1.DisplayStyle =
System.Windows.Forms.ToolStripItemDisplayStyle.Text;
this.statusStripPanel1.Name = "statusStripPanel1";
this.statusStripPanel1.Text = "Ready";
//
// numericUpDown1
//
this.numericUpDown1.Location = new System.Drawing.Point(37, 29);
this.numericUpDown1.Maximum = new decimal(new int[] {
1410065408,
2,
0,
0});
this.numericUpDown1.Name = "numericUpDown1";
this.numericUpDown1.TabIndex = 7;
this.numericUpDown1.ValueChanged += new
System.EventHandler(this.numericUpDown1_ValueChanged);
//
// groupBox1
//
this.groupBox1.Anchor = System.Windows.Forms.AnchorStyles.None;
this.groupBox1.Controls.Add(this.numericUpDown1);
this.groupBox1.Location = new System.Drawing.Point(280, 326);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(200, 70);
this.groupBox1.TabIndex = 13;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Threshold Value";
//
// groupBox2
//
this.groupBox2.Anchor = System.Windows.Forms.AnchorStyles.None;
this.groupBox2.Controls.Add(this.startButton);
this.groupBox2.Controls.Add(this.stopButton);
this.groupBox2.Location = new System.Drawing.Point(26, 327);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(214, 68);
this.groupBox2.TabIndex = 14;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "Logging";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new
System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent,
50F));
this.tableLayoutPanel1.ColumnStyles.Add(new
System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent,
50F));
this.tableLayoutPanel1.Controls.Add(this.groupBox2, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.groupBox1, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.attributesDemoControl1,
0, 0);
this.tableLayoutPanel1.Dock =
System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0,
0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.Padding = new
System.Windows.Forms.Padding(10);
this.tableLayoutPanel1.RowCount = 2;
this.tableLayoutPanel1.RowStyles.Add(new
System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 80F));
this.tableLayoutPanel1.RowStyles.Add(new
System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(514, 411);
this.tableLayoutPanel1.TabIndex = 15;
//
// attributesDemoControl1
//
this.tableLayoutPanel1.SetColumnSpan(this.attributesDemoControl1, 2);
this.attributesDemoControl1.DataMember = "";
this.attributesDemoControl1.DataSource = this.bindingSource1;
this.attributesDemoControl1.Dock =
System.Windows.Forms.DockStyle.Fill;
this.attributesDemoControl1.Location = new
System.Drawing.Point(13, 13);
this.attributesDemoControl1.Name = "attributesDemoControl1";
this.attributesDemoControl1.Padding = new
System.Windows.Forms.Padding(10);
this.attributesDemoControl1.Size = new System.Drawing.Size(488,
306);
this.attributesDemoControl1.TabIndex = 0;
this.attributesDemoControl1.Threshold = 200000F;
this.attributesDemoControl1.TitleText = "TITLE";
this.attributesDemoControl1.ThresholdExceeded += new
AttributesDemoControlLibrary.ThresholdExceededEventHandler(this.attributesDe
moControl1_ThresholdExceeded);
//
// Form1
//
this.BackColor = System.Drawing.SystemColors.Control;
this.ClientSize = new System.Drawing.Size(514, 430);
this.Controls.Add(this.tableLayoutPanel1);
this.Font = new System.Drawing.Font("Microsoft Sans Serif",
8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,
((byte)(0)));
this.Name = "Form1";
this.Text = "Form1";
((System.ComponentModel.ISupportInitialize)
(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)
(this.performanceCounter1)).EndInit();
((System.ComponentModel.ISupportInitialize)
(this.timer1)).EndInit();
((System.ComponentModel.ISupportInitialize)
(this.numericUpDown1)).EndInit();
this.groupBox1.ResumeLayout(false);
this.groupBox2.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
}
}
C#
Atributo TypeConverter
TypeConverterAttribute é outro atributo de nível de classe comumente usado. O
exemplo de código a seguir mostra seu uso para a classe LogEntry . Este exemplo
também mostra uma implementação de um TypeConverter para o LogEntry tipo,
chamado LogEntryTypeConverter .
C#
public LogEntry(
T value,
DateTime time)
{
this.entryValue = value;
this.entryTimeValue = time;
}
public T Entry
{
get
{
return this.entryValue;
}
}
string stringRepresentation =
String.Format("{0} | {1}",
le.Entry,
le.EntryTime);
return stringRepresentation;
}
C#
[Category("Appearance")]
[Description("The title of the log data.")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Localizable(true)]
[HelpKeywordAttribute("AttributesDemoControlLibrary.AttributesDemoControl.Ti
tleText")]
public string TitleText
{
get
{
return this.label1.Text;
}
set
{
this.label1.Text = value;
}
}
Atributo AmbientValue
O exemplo a seguir demonstra o e mostra o AmbientValueAttribute código que dá
suporte à sua interação com o ambiente de design. Essa interação é chamada ambiente.
C#
[AmbientValue(typeof(Color), "Empty")]
[Category("Appearance")]
[DefaultValue(typeof(Color), "White")]
[Description("The color used for painting alert text.")]
public Color AlertForeColor
{
get
{
if (this.alertForeColorValue == Color.Empty &&
this.Parent != null)
{
return Parent.ForeColor;
}
return this.alertForeColorValue;
}
set
{
this.alertForeColorValue = value;
}
}
C#
[Category("Data")]
[Description("Indicates the source of data for the control.")]
[RefreshProperties(RefreshProperties.Repaint)]
[AttributeProvider(typeof(IListSource))]
public object DataSource
{
get
{
return this.dataGridView1.DataSource;
}
set
{
this.dataGridView1.DataSource = value;
}
}
C#
[Category("Data")]
[Description("Indicates a sub-list of the data source to show in the
control.")]
public string DataMember
{
get
{
return this.dataGridView1.DataMember;
}
set
{
this.dataGridView1.DataMember = value;
}
}
Compilando o código
O formulário que hospeda o AttributesDemoControl requer uma referência ao
assembly AttributesDemoControl para compilar.
Confira também
IComparable
DataGridView
Desenvolvendo controles dos Windows Forms personalizados com o .NET
Framework
Atributos em controles dos Windows Forms
Como serializar coleções de tipos padrão com
DesignerSerializationVisibilityAttribute
Pintura e renderização de controle
personalizada
Artigo • 02/06/2023
A pintura personalizada de controles é uma das muitas tarefas complicadas que são
facilitadas pelo .NET Framework. Ao criar um controle personalizado, você tem muitas
opções em relação à aparência gráfica dele. Ao criar um controle que herda de Control ,
você deverá fornecer o código que permite ao controle renderizar sua representação
gráfica. Ao criar um controle de usuário herdando de UserControl ou herdando de um
dos controles dos Windows Forms, você pode substituir a representação gráfica padrão
e fornecer seu próprio código de elementos gráficos. Se você deseja fornecer
renderização personalizada para os controles membros de um UserControl que você
está criando, suas opções tornam-se mais limitadas, mas ainda proporcionam uma
ampla gama de possibilidades gráficas para seus aplicativos e controles.
Nesta seção
Renderizando um controle dos Windows Forms
Mostra como programar a lógica que exibe um controle.
Controles constituintes
Descreve como implementar o código de renderização personalizada para controles
membros em seus formulários e controles de usuário.
UserControl
Descreve essa classe e tem links para todos os seus membros.
OnPaint
Descreve esse método.
Seções relacionadas
Como: criar objetos gráficos para desenho
Apresenta a funcionalidade de elementos gráficos GDI+ de uma perspectiva do Visual
Studio e fornece links para mais informações.
C#
C#
7 Observação
A classe base Control define outro método útil para desenhar — o OnPaintBackground
método .
C#
C#
Rectangle invalid = new Rectangle(
client.X + min,
client.Y,
max - min,
client.Height);
Invalidate(invalid);
C#
C#
base.OnPaint(e);
if (baseBackground == null) {
if (showGradient) {
baseBackground = new LinearGradientBrush(new Point(0, 0),
new Point(ClientSize.Width,
0),
StartColor,
EndColor);
}
else if (BackgroundImage != null) {
baseBackground = new TextureBrush(BackgroundImage);
}
else {
baseBackground = new SolidBrush(BackColor);
}
}
C#
protected override void OnResize(EventArgs e) {
base.OnResize(e);
if (baseBackground != null) {
baseBackground.Dispose();
baseBackground = null;
}
}
Confira também
Como: Criar um controle do Windows Forms que mostre o progresso
Controles desenhados pelo usuário
Artigo • 02/06/2023
O .NET Framework possibilita que você desenvolva facilmente seus próprios controles.
Você pode criar um controle de usuário, que é um conjunto de controles padrão
vinculados por código ou pode criar seu próprio controle desde o início. Você pode até
mesmo usar herança para criar um controle que herde de um controle existente e
adicionar à sua funcionalidade inerente. Independentemente da abordagem utilizada, o
.NET Framework oferece a funcionalidade de desenhar uma interface gráfica
personalizada para qualquer controle que você criar.
Para obter mais informações sobre o Graphics objeto e como usá-lo, consulte Como
criar objetos gráficos para desenho.
Ao herdar da Control classe, você deve substituir o OnPaint método e fornecer código
de renderização gráfica dentro. Se você quiser fornecer uma interface gráfica
personalizada para um controle de usuário ou um controle herdado, também poderá
fazer isso substituindo o OnPaint método. Um exemplo é mostrado abaixo:
C#
protected override void OnPaint(PaintEventArgs e)
{
// Call the OnPaint method of the base class.
base.OnPaint(e);
C#
SetStyle(ControlStyles.ResizeRedraw, true);
7 Observação
Confira também
Region
ControlStyles
Graphics
OnPaint
PaintEventArgs
Como: criar objetos gráficos para desenho
Controles constituintes
Variedades de controles personalizados
Controles constituintes
Artigo • 02/06/2023
C#
7 Observação
Confira também
UserControl
OnPaint
Controles desenhados pelo usuário
Como: criar objetos gráficos para desenho
Variedades de controles personalizados
Como: Deixar o controle invisível em
tempo de execução
Artigo • 02/06/2023
C#
// To set the Visible property from within your object's own code.
this.Visible = false;
// To set the Visible property from another object.
myControl1.Visible = false;
Confira também
Visible
Desenvolvendo controles dos Windows Forms personalizados com o .NET
Framework
Como: Dar ao controle um segundo plano transparente
Como: Dar ao controle um segundo
plano transparente
Artigo • 02/06/2023
7 Observação
7 Observação
Confira também
FromArgb
Desenvolvendo controles dos Windows Forms personalizados com o .NET
Framework
Usando classes de elementos gráficos gerenciadas
Como: desenhar linhas opacas e semitransparentes
Renderizando controles com estilos
visuais
Artigo • 21/06/2023
ButtonRenderer
CheckBoxRenderer
GroupBoxRenderer
RadioButtonRenderer
ProgressBarRenderer
ScrollBarRenderer
TabRenderer
TextBoxRenderer
TrackBarRenderer
Para obter mais informações sobre como usar essas classes para desenhar um controle,
consulte Como usar uma classe de renderização do controle.
Condição Observações
O usuário habilitou estilos Para verificar essa condição separadamente, use a IsEnabledByUser
visuais no sistema propriedade da VisualStyleInformation classe .
operacional.
Os estilos visuais estão Os estilos visuais podem ser habilitados em um aplicativo chamando
habilitados no aplicativo. o Application.EnableVisualStyles método ou usando um manifesto
do aplicativo que especifica que ComCtl32.dll versão 6 ou posterior
será usado para desenhar controles.
Os estilos visuais estão Para verificar essa condição separadamente, use a VisualStyleState
sendo usados para propriedade da Application classe e verifique se ela tem o valor
desenhar a área de cliente VisualStyleState.ClientAreaEnabled ou
das janelas de aplicativos. VisualStyleState.ClientAndNonClientAreasEnabled.
Confira também
Pintura e renderização de controle personalizada
Como: Usar uma classe de renderização
do controle
Artigo • 02/06/2023
Este exemplo demonstra como usar a ComboBoxRenderer classe para renderizar a seta
suspensa de um controle de caixa de combinação. O exemplo consiste no OnPaint
método de um controle personalizado simples. A ComboBoxRenderer.IsSupported
propriedade é usada para determinar se os estilos visuais estão habilitados na área do
cliente das janelas do aplicativo. Se os estilos visuais estiverem ativos, o
ComboBoxRenderer.DrawDropDownButton método renderizará a seta suspensa com
estilos visuais; caso contrário, o ControlPaint.DrawComboButton método renderizará a
seta suspensa no estilo clássico do Windows.
Exemplo
C#
if (!ComboBoxRenderer.IsSupported)
{
ControlPaint.DrawComboButton(e.Graphics,
this.ClientRectangle, ButtonState.Normal);
}
else
{
ComboBoxRenderer.DrawDropDownButton(e.Graphics,
this.ClientRectangle, ComboBoxState.Normal);
}
}
Compilando o código
Este exemplo requer:
Confira também
Renderizando controles com estilos visuais
Como: Renderizar um elemento de
estilo visual
Artigo • 02/06/2023
C#
public CustomControl()
{
this.Location = new Point(50, 50);
this.Size = new Size(200, 200);
this.BackColor = SystemColors.ActiveBorder;
if (Application.RenderWithVisualStyles &&
VisualStyleRenderer.IsElementDefined(element))
{
renderer = new VisualStyleRenderer(element);
}
}
C#
Compilando o código
Este exemplo requer:
Confira também
Renderizando controles com estilos visuais
Layout em controles dos Windows
Forms
Artigo • 02/06/2023
O posicionamento exato dos controles no formulário é uma prioridade alta para muitos
aplicativos. O System.Windows.Forms namespace oferece muitas ferramentas de layout
para fazer isso.
Nesta seção
Visão geral da propriedade AutoSize
Descreve a AutoSize propriedade e sua função no layout.
Referência
TableLayoutPanel
Fornece documentação de referência para o TableLayoutPanel controle.
FlowLayoutPanel
Fornece documentação de referência para o FlowLayoutPanel controle.
Confira também
Como: Ancorar e encaixar controles filho em um controle FlowLayoutPanel
Como ancorar e encaixar controles filho em um controle TableLayoutPanel
Como criar um layout dos Windows Forms que responda bem à localização
Comportamento de AutoSize no controle TableLayoutPanel
Visão geral da propriedade AutoSize
Artigo • 02/06/2023
Comportamento de AutoSize
Apenas alguns controles dão suporte à AutoSize propriedade. Além disso, alguns
controles que dão suporte à AutoSize propriedade também dão suporte à AutoSizeMode
propriedade.
Se um controle alterar o tamanho, o Quando o conteúdo de um controle faz com que ele
valor de sua Location propriedade cresça, o controle aumenta para a direita e para baixo.
sempre permanecerá constante. Controles não crescem para a esquerda.
Não há um tamanho mínimo Isso significa que, se um controle for definido para
definido por padrão. reduzir AutoSize e não tiver conteúdo, o valor de sua Size
propriedade será 0,0. Nesse caso, o controle será
reduzido a um ponto e não ficará visível imediatamente.
Se um controle não implementar o Isso significa que a configuração AutoSize para true não
GetPreferredSize método, o método terá efeito.
retornará o GetPreferredSizeSize
último valor atribuído à propriedade.
Propriedade AutoSizeMode
A AutoSizeMode propriedade fornece um controle mais refinado sobre o
comportamento padrão AutoSize . A propriedade AutoSizeMode especifica como um
controle dimensiona a si mesmo de acordo com seu conteúdo. O conteúdo, por
exemplo, pode ser o texto para um Button controle ou os controles filho de um
contêiner.
Configuração Comportamento
de
AutoSizeMode
GrowOnly O controle cresce tanto quanto necessário para abranger seu conteúdo, mas
não reduzirá menor que o valor especificado por sua Size propriedade.
Label
LinkLabel
NumericUpDown
RadioButton
TextBox
TrackBar
FlowLayoutPanel
Form
GroupBox
Panel
TableLayoutPanel
Suporte para AutoSize Tipo de controle
ComboBox
DataGridView
DateTimePicker
ListBox
ListView
MaskedTextBox
MonthCalendar
ProgressBar
PropertyGrid
RichTextBox
SplitContainer
TabControl
TabPage
TreeView
WebBrowser
ScrollBar
7 Observação
Confira também
AutoSize
PreferredSize
GetPreferredSize
Como: Alinhar um controle às bordas de
formulários
Artigo • 02/06/2023
Você pode fazer com que o controle se alinhe à borda dos formulários definindo a Dock
propriedade. Essa propriedade determina onde reside o controle no formulário. A Dock
propriedade pode ser definida com os seguintes valores:
None Não encaixa em nenhum lugar e aparece no local especificado por sua Location
propriedade.
C#
Confira também
Control.Dock
Control.Anchor
Desenvolvendo controles dos Windows Forms personalizados com o .NET
Framework
Como: Ancorar e encaixar controles filho em um controle FlowLayoutPanel
Como ancorar e encaixar controles filho em um controle TableLayoutPanel
Visão geral da propriedade AutoSize
Margem e preenchimento em controles
dos Windows Forms
Artigo • 02/06/2023
O posicionamento exato dos controles no formulário é uma prioridade alta para muitos
aplicativos. O System.Windows.Forms namespace oferece muitos recursos de layout
para fazer isso. Duas das mais importantes são as propriedades e Padding as Margin
propriedades.
Há suporte de tempo de design para esse recurso no Visual Studio. Confira também o
passo a passo: colocando controles Windows Forms com preenchimento, margens e a
propriedade AutoSize.
Confira também
AutoSize
Margin
Padding
LayoutEngine
TableLayoutPanel
FlowLayoutPanel
Como: Criar uma borda em torno de um
controle do Windows Forms usando
preenchimento
Artigo • 02/06/2023
O exemplo de código a seguir demonstra como criar uma borda ou estrutura de tópicos
em torno de um RichTextBox controle. O exemplo define o valor da propriedade de
Padding um Panel controle como 5 e define a Dock propriedade de um controle filho
RichTextBox como Fill. O BackColor controle é definido como Blue, o Panel que cria uma
borda azul em torno do RichTextBox controle.
Exemplo
C#
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace MarginAndPadding
{
public class Form1 : Form
{
private Panel panel1;
private RichTextBox richTextBox1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
this.panel1.BackColor = System.Drawing.Color.Blue;
this.panel1.Padding = new System.Windows.Forms.Padding(5);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.richTextBox1.BorderStyle =
System.Windows.Forms.BorderStyle.None;
this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be
disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.richTextBox1);
this.panel1.Location = new System.Drawing.Point(20, 20);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(491, 313);
this.panel1.TabIndex = 0;
//
// richTextBox1
//
this.richTextBox1.Location = new System.Drawing.Point(5, 5);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(481, 303);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(531, 353);
this.Controls.Add(this.panel1);
this.Name = "Form1";
this.Padding = new System.Windows.Forms.Padding(20);
this.Text = "Form1";
this.panel1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
}
Confira também
Padding
Margem e preenchimento em controles dos Windows Forms
Como: Implementar um mecanismo de
layout personalizado
Artigo • 02/06/2023
Exemplo
C#
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.Layout;
public DemoFlowPanel()
{
}
return layoutEngine;
}
}
}
return false;
}
}
Confira também
LayoutEngine
Control.LayoutEngine
Multithread em controles dos Windows
Forms
Artigo • 02/06/2023
Em muitos aplicativos, você pode tornar sua interface do usuário mais ágil executando
operações demoradas em outro thread. Várias ferramentas estão disponíveis para
multithreading de seus controles Windows Forms, incluindo o System.Threading
namespace, o Control.BeginInvoke método e o BackgroundWorker componente.
7 Observação
Nesta seção
Como: Chamadas thread-safe para controles do Windows Forms
Mostra como fazer chamadas thread-safe para controles dos Windows Forms.
Referência
BackgroundWorker
Documenta um componente que encapsula um thread de trabalho para operações
assíncronas.
LoadAsync
Documenta como carregar um som de forma assíncrona.
LoadAsync
Documenta como carregar uma imagem de forma assíncrona.
Seções relacionadas
Como: Executar uma operação em segundo plano
Mostra como executar uma operação demorada com o BackgroundWorker
componente.
C#
Você pode criar e executar esses exemplos como aplicativos .NET Framework na linha de
comando C# ou Visual Basic. Para obter mais informações, consulte Compilação de linha
de comando com csc.exe ou Compilar a partir da linha de comando (Visual Basic).
A partir do .NET Core 3.0, você também pode compilar e executar os exemplos como
aplicativos do Windows .NET Core de uma pasta que tem um arquivo de projeto .NET
Core Windows Forms <folder name.csproj>.
C#
using System;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
[STAThread]
static void Main()
{
Application.SetCompatibleTextRenderingDefault(false);
Application.EnableVisualStyles();
Application.Run(new InvokeThreadSafeForm());
}
public InvokeThreadSafeForm()
{
button1 = new Button
{
Location = new Point(15, 55),
Size = new Size(240, 20),
Text = "Set text safely"
};
button1.Click += new EventHandler(Button1_Click);
textBox1 = new TextBox
{
Location = new Point(15, 15),
Size = new Size(240, 20)
};
Controls.Add(button1);
Controls.Add(textBox1);
}
C#
using System;
using System.ComponentModel;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
public class BackgroundWorkerForm : Form
{
private BackgroundWorker backgroundWorker1;
private Button button1;
private TextBox textBox1;
[STAThread]
static void Main()
{
Application.SetCompatibleTextRenderingDefault(false);
Application.EnableVisualStyles();
Application.Run(new BackgroundWorkerForm());
}
public BackgroundWorkerForm()
{
backgroundWorker1 = new BackgroundWorker();
backgroundWorker1.DoWork += new
DoWorkEventHandler(BackgroundWorker1_DoWork);
backgroundWorker1.RunWorkerCompleted += new
RunWorkerCompletedEventHandler(BackgroundWorker1_RunWorkerCompleted);
button1 = new Button
{
Location = new Point(15, 55),
Size = new Size(240, 20),
Text = "Set text safely with BackgroundWorker"
};
button1.Click += new EventHandler(Button1_Click);
textBox1 = new TextBox
{
Location = new Point(15, 15),
Size = new Size(240, 20)
};
Controls.Add(button1);
Controls.Add(textBox1);
}
private void Button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
O modelo STA exige que qualquer método em um controle que precise ser chamado de
fora do thread de criação do controle deve realizar marshaling (ser executado no)
thread de criação do controle. A classe Control base fornece vários métodos
(BeginInvokeInvokeeEndInvoke) para essa finalidade. Invoke faz chamadas de método
síncrono; BeginInvoke faz chamadas de método assíncrono.
DirectorySearcher .
assíncrona.
C#
namespace Microsoft.Samples.DirectorySearcher
{
using System;
using System.IO;
using System.Threading;
using System.Windows.Forms;
/// <summary>
/// This class is a Windows Forms control that implements a simple
directory searcher.
/// You provide, through code, a search string and it will search
directories on
/// a background thread, populating its list box with matches.
/// </summary>
public class DirectorySearcher : Control
{
// Define a special delegate that handles marshaling
// lists of file names from the background directory search
// thread to the thread that contains the list box.
private delegate void FileListDelegate(string[] files, int startIndex,
int count);
Controls.Add(listBox);
if (wasSearching)
{
StopSearch();
}
listBox.Items.Clear();
searchCriteria = value;
if (wasSearching)
{
BeginSearch();
}
}
}
/// <summary>
/// This method is called from the background thread. It is called
through
/// a BeginInvoke call so that it is always marshaled to the thread
that
/// owns the list box control.
/// </summary>
/// <param name="files"></param>
/// <param name="startIndex"></param>
/// <param name="count"></param>
private void AddFiles(string[] files, int startIndex, int count)
{
while(count-- > 0)
{
listBox.Items.Add(files[startIndex + count]);
}
}
/// <summary>
/// This method is called by the background thread when it has
finished
/// the search.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnSearchComplete(object sender, EventArgs e)
{
if (SearchComplete != null)
{
SearchComplete(sender, e);
}
}
if (searchThread.IsAlive)
{
searchThread.Abort();
searchThread.Join();
}
searchThread = null;
searching = false;
}
/// <summary>
/// Recurses the given path, adding all files on that path to
/// the list box. After it finishes with the files, it
/// calls itself once for each directory on the path.
/// </summary>
/// <param name="searchPath"></param>
private void RecurseDirectory(string searchPath)
{
// Split searchPath into a directory and a wildcard specification.
//
string directory = Path.GetDirectoryName(searchPath);
string search = Path.GetFileName(searchPath);
string[] files;
// Now that you have finished the files in this directory, recurse
for
// each subdirectory.
string[] directories = Directory.GetDirectories(directory);
foreach(string d in directories)
{
RecurseDirectory(Path.Combine(d, search));
}
}
/// <summary>
/// This is the actual thread procedure. This method runs in a
background
/// thread to scan directories. When finished, it simply exits.
/// </summary>
private void ThreadProcedure()
{
// Get the search string. Individual
// field assigns are atomic in .NET, so you do not
// need to use any thread synchronization to grab
// the string value here.
try
{
string localSearch = SearchCriteria;
namespace SampleUsage
{
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.Samples.DirectorySearcher;
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private DirectorySearcher directorySearcher;
private System.Windows.Forms.TextBox searchText;
private System.Windows.Forms.Label searchLabel;
private System.Windows.Forms.Button searchButton;
public Form1()
{
//
// Required for Windows Forms designer support.
//
InitializeComponent();
//
// Add any constructor code after InitializeComponent call here.
//
}
this.directorySearcher,
this.searchText,
this.searchButton});
this.Text = "Search Directories";
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
7 Observação
As tabelas a seguir não listam todos os controles ou componentes que você pode
usar nos Windows Forms. Para obter uma lista mais abrangente, consulte Controles
a serem usados nos Windows Forms
Edição de texto Controle TextBox Exibe o texto inserido em tempo de design que pode
ser editado por usuários em tempo de execução ou ser
modificado programaticamente.
Função Control Descrição
Exibição de Controle Label Exibe o texto que os usuários não podem editar
informações diretamente.
(somente
leitura)
Seleção de uma Controle Exibe uma lista rolável de itens, cada um deles
lista CheckedListBox acompanhado por uma caixa de seleção.
componente ToolTip Fornece uma janela pop-up que exibe uma breve
descrição da finalidade do controle quando o usuário
deixa o ponteiro sobre o controle.
MainMenu MenuStrip
StatusBar StatusStrip
Confira também
Controles a serem usados nos Windows Forms
Desenvolvendo controles dos Windows Forms personalizados com o .NET
Framework
Desenvolver controles Windows Forms
em tempo de design
Artigo • 02/06/2023
Para autores de controle, o .NET Framework fornece uma ampla variedade de tecnologia
de criação de controle. Os autores não estão mais limitados a criar controles de
composição que atuam como uma coleção de controles preexistentes. Por meio de
herança, você pode criar seus próprios controles de com base em controles de
composição preexistentes ou controles dos Windows Forms preexistentes. Você
também pode criar seus próprios controles que implementam pintura personalizada.
Essas opções possibilitam muita flexibilidade no design e a funcionalidade da interface
visual. Para aproveitar esses recursos, familiarize-se com os conceitos de programação
baseada em objeto.
7 Observação
Não é necessário ter uma compreensão completa da herança, mas você pode achar
útil se referir aos conceitos básicos de herança (Visual Basic).
Caso queira criar controles personalizados para usar em Web Forms, consulte
Desenvolvendo Controles Personalizados ASP.NET Server.
Nesta seção
Passo a passo: criando um controle composto
Mostra como criar um controle de composição simples em C#.
Referência
System.Windows.Forms.Control
System.Windows.Forms.UserControl
Seções relacionadas
Desenvolvendo controles dos Windows Forms personalizados com o .NET Framework
Discute como criar seus próprios controles personalizados com o .NET Framework.
Criar o projeto
Ao criar um novo projeto, você especifica seu nome para definir o namespace raiz, o
nome do assembly e o nome do projeto e garante que o componente padrão estará no
namespace correto.
Nome lblDisplay
TextAlign MiddleCenter
Font.Size 14
4. Na Caixa de Ferramentas, expanda o nó Componentes e clique duas vezes em
Temporizador.
7. Modifique o código para que ele fique parecido com o exemplo de código a
seguir. Lembre-se de alterar o modificador de acesso de private para protected .
C#
Esse código fará com que a hora atual seja mostrada em lblDisplay . Como o
intervalo de timer1 foi definido como 1000 , esse evento ocorrerá a cada vários
milhares de milissegundos, atualizando a hora atual a cada segundo.
8. Modifique o método para que ele seja substituível pela palavra-chave virtual .
Para obter mais informações, consulte a seção “Herdando de um controle de
usuário” abaixo.
C#
C#
Essas instruções criam as variáveis particulares que você usará para armazenar os
valores para as propriedades que está prestes a criar.
C#
Testar o controle
Controles não são aplicativos autônomos; eles devem ser hospedados em um contêiner.
Teste o comportamento do tempo de execução do controle e exerça suas propriedades
com o Contêiner de Teste de UserControl. Para obter mais informações, consulte Como
testar o comportamento em tempo de execução de um UserControl.
Nesta seção e nas seções anteriores, você viu como os componentes e controles
do Windows podem ser combinados com um código e empacotamento para
fornecer funcionalidade personalizada na forma de um controle de composição.
Você aprendeu a expor as propriedades no controle de composição e a testar o
controle após sua conclusão. Na próxima seção, você aprenderá a construir um
controle de composição herdado usando ctlClock como base.
A primeira etapa na criação de um controle herdado é derivá-lo de seu pai. Essa ação
cria um novo controle que tem todas as propriedades, métodos e características gráficas
do controle pai, mas que também pode atuar como uma base para a adição de uma
funcionalidade nova ou modificada.
seguir.
C#
7 Observação
7 Observação
Propriedade Configuração
Nome lblAlarm
Texto Alarme!
TextAlign MiddleCenter
Visível false
ctlClock .
C#
C#
Propriedade Valor
Nome btnAlarmOff
4. Modifique esse método para que ele fique parecido com o código a seguir.
C#
Nome lblTest
Formato Time
C#
15. Usando o teclado, defina um valor de minutos que tem um minuto a mais que a
hora atual mostrada por ctlAlarmClock .
16. Desligue o alarme clicando em btnAlarmOff . Agora você pode redefinir o alarme.
Este artigo abordou uma série de conceitos-chave. Você aprendeu a criar um controle
de composição, combinando controles e componentes em um contêiner de controle de
composição. Você aprendeu a adicionar propriedades ao controle e a escrever um
código para implementar a funcionalidade personalizada. Na última seção, você
aprendeu a estender a funcionalidade de determinado controle de composição por
meio da herança e a alterar a funcionalidade dos métodos do host ao substituí-los.
Confira também
Variedades de controles personalizados
Como exibir um controle na caixa de diálogo Escolher Itens da Caixa de
Ferramentas
Instruções passo a passo: herdando um controle dos Windows Forms com Visual
C#
Passo a passo: herdar de um controle de
Windows Forms com C #
Artigo • 02/06/2023
Com o C#, você pode criar controles personalizados poderosos por meio da herança.
Com a herança, você é capaz de criar controles que mantêm todas as funcionalidades
inerentes de controles padrão dos Windows Forms, mas também incorporam
funcionalidades personalizadas. Neste passo a passo, você criará um controle herdado
simples chamado ValueButton . Esse botão herdará a funcionalidade do controle de
Windows Forms Button padrão e exporá uma propriedade personalizada chamada
ButtonValue .
Criar o projeto
Quando cria um novo projeto, você especifica seu nome para definir o namespace raiz,
o nome do assembly e o nome do projeto e para garantir que o componente padrão
estará no namespace correto.
7 Observação
Um designer visual não está mais disponível. Como o Button controle faz sua
própria pintura, você não consegue modificar sua aparência no designer. Sua
representação visual será exatamente igual à da classe da qual herda (ou seja),
Buttona menos que seja modificada no código. Você ainda pode adicionar
componentes, que não têm uma interface do usuário, à superfície de design.
C#
// Creates the private variable that will store the value of your
// property.
private int varValue;
// Declares the property.
public int ButtonValue
{
// Sets the method for retrieving the value of your property.
get
{
return varValue;
}
// Sets the method for setting the value of your property.
set
{
varValue = value;
}
}
Testar o controle
Controles não são projetos autônomos; eles devem ser hospedados em um contêiner.
Para testar seu controle, você precisa fornecer um projeto de teste em que ele será
executado. Você também precisa tornar seu controle acessível para o projeto de teste
compilando-o. Nesta seção, você compilará seu controle e o testará em um Windows
Form.
5. Clique na guia rotulada como Projetos. Seu projeto ValueButtonLib será listado em
Nome do Projeto. Clique duas vezes no projeto para adicionar a referência ao
projeto de teste.
C#
label1.Text = valueButton1.ButtonValue.ToString();
10. No Gerenciador de Soluções, clique com o botão direito do mouse em Teste e
escolha Definir como Projeto de Inicialização no menu de atalho.
Form1 é exibido.
Confira também
Como exibir um controle na caixa de diálogo Escolher Itens da Caixa de
Ferramentas
Passo a passo: criando um controle de composição com o Visual C#
Passo a passo: executar tarefas comuns
usando ações de designer
Artigo • 02/06/2023
À medida que você constrói formulários e controles para seu aplicativo Windows Forms,
há muitas tarefas que você executará repetidamente. A lista a seguir mostra algumas
das tarefas normalmente executadas que você encontrará:
Para acelerar o desenvolvimento, muitos controles oferecem ações de designer, que são
menus sensíveis ao contexto que permitem executar tarefas comuns como essas em um
único gesto no tempo de design. Essas tarefas são chamadas de verbos de ações de
designer.
As ações do designer permanecem anexadas a uma instância de controle por seu tempo
de vida no designer e estão sempre disponíveis.
Criar o projeto
A primeira etapa é criar o projeto e configurar o formulário.
Confira também
TextBox
TabControl
SplitContainer
DesignerActionList
Passo a passo: Serializar coleções de
tipos padrão
Artigo • 02/06/2023
Seus controles personalizados às vezes exporão uma coleção como uma propriedade.
Este passo a passo demonstra como usar a DesignerSerializationVisibilityAttribute classe
para controlar como uma coleção é serializada em tempo de design. Aplicar o Content
valor à sua propriedade de coleção garante que a propriedade será serializada.
Para copiar o código neste tópico como uma lista única, consulte Como serializar
coleções de tipos padrão com o DesignerSerializationVisibilityAttribute.
Pré-requisitos
É necessário o Visual Studio para concluir este passo a passo.
Multilinha true
Dock Fill
ScrollBars Vertical
Propriedade Altere para
C#
7 Observação
C#
this.textBox1.Text = sb.ToString();
}
}
7 Observação
7 Observação
8. Abra a região chamada Código gerado pelo Windows Form Designer e localize a
seção rotulada como serializationDemoControl1. Sob esse rótulo está o código
que representa o estado serializado do seu controle. As cadeias de caracteres que
você digitou na etapa 5 aparecem em uma atribuição para a propriedade Strings .
Os exemplos de código a seguir no C# e no Visual Basic mostram código
semelhante ao que você verá se digitou as cadeias de caracteres "vermelho",
"laranja" e "amarelo".
C#
C#
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden
)]
7 Observação
Neste caso, o Designer de Formulários do Windows não emite nenhuma
atribuição para a propriedade Strings .
Próximas etapas
Se você souber como serializar uma coleção de tipos padrão, considere integrar seus
controles personalizados mais profundamente no ambiente de tempo de design. Os
tópicos a seguir descrevem como aprimorar a integração do tempo de design de seus
controles personalizados:
Confira também
DesignerSerializationVisibilityAttribute
Passo a passo: Preencher de forma automática a caixa de ferramentas com
componentes personalizados
Passo a passo: Depurar controles de
Windows Forms personalizados em
tempo de design
Artigo • 02/06/2023
Você pode depurar seus controles personalizados usando o Visual Studio, da mesma
forma que depuraria qualquer outra classe do .NET Framework. A diferença é que você
depurará uma instância separada do Visual Studio que está executando o código do
controle personalizado.
Criar o projeto
A primeira etapa é criar o projeto do aplicativo. Você usará este projeto para criar o
aplicativo que hospeda o controle personalizado.
4. Compile a solução.
Ponto de verificação
Neste ponto, você poderá ver o controle personalizado na Caixa de Ferramentas.
Para verificar o progresso, localize a nova guia chamada Componentes
DebugControlLibrary e clique para selecioná-la. Quando ela abrir, você verá seu
controle listado como DebugControl com o ícone padrão ao lado dele.
C#
2. Compile a solução.
Na seção Iniciar Ação, selecione Iniciar programa externo. Você vai depurar uma
instância separada do Visual Studio, portanto, clique nas reticências ( ) para
procurar o IDE do Visual Studio. O nome do arquivo executável é devenv.exee, se
você estiver instalado no local padrão, seu caminho será
%ProgramFiles(x86)%\Microsoft Visual Studio\2019\<edition>\Common7\IDE.
) Importante
Próximas etapas
Agora que você pode depurar seus controles personalizados em tempo de design, há
muitas possibilidades para expandir a interação do controle com o IDE do Visual Studio.
Confira também
Passo a passo: criando um controle de Windows Forms que aproveita os recursos
de Design-Time do Visual Studio
Passo a passo: criar um controle que
aproveite os recursos de tempo de
design
Artigo • 02/06/2023
O designer para esse controle interage com o ambiente de design para fornecer uma
experiência de tempo de design personalizada. Com o designer personalizado, você
pode montar uma implementação MarqueeControl personalizada com luzes animadas e
o texto piscando em muitas combinações. Você pode usar o controle montado em um
formulário como qualquer outro controle dos Windows Forms.
Quando você terminar de usar este passo a passo, seu controle personalizado será
semelhante ao seguinte:
Para obter a listagem de códigos completa, consulte Como criar um controle dos
Windows Forms que aproveita funcionalidades de tempo de design.
Pré-requisitos
Para concluir este passo a passo, você precisará de Visual Studio.
Criar o projeto
A primeira etapa é criar o projeto do aplicativo. Você usará este projeto para criar o
aplicativo que hospeda o controle personalizado.
5. Clique com o botão direito do mouse na pasta Design e adicione uma nova classe.
Nomeie-o MarqueeControlRootDesigner.
Você associa o controle ao designer usando a DesignerAttribute classe. Como você está
desenvolvendo todo o comportamento de tempo de design do controle personalizado,
o designer personalizado implementará a IRootDesigner interface.
C#
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;
C#
[Designer( typeof(
MarqueeControlLibrary.Design.MarqueeControlRootDesigner ), typeof(
IRootDesigner ) )]
public class MarqueeControl : UserControl
{
C#
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;
7 Observação
C#
namespace MarqueeControlLibrary.Design
{
[ToolboxItemFilter("MarqueeControlLibrary.MarqueeBorder",
ToolboxItemFilterType.Require)]
[ToolboxItemFilter("MarqueeControlLibrary.MarqueeText",
ToolboxItemFilterType.Require)]
public class MarqueeControlRootDesigner : DocumentDesigner
{
C#
public MarqueeControlRootDesigner()
{
Trace.WriteLine("MarqueeControlRootDesigner ctor");
}
C#
using MarqueeControlLibrary;
4. Compile o projeto.
7. Compile o projeto.
3. Na seção Iniciar Ação , selecione Iniciar Programa Externo. Você vai depurar uma
instância separada de Visual Studio, portanto, clique no botão reticências ( ) para
procurar o IDE Visual Studio. O nome do arquivo executável é devenv.exe e, se
você estiver instalado no local padrão, seu caminho será
%ProgramFiles(x86)%\Microsoft Visual Studio\2019\
<edition>\Common7\IDE\devenv.exe.
Ponto de verificação
Agora você está pronto para depurar o comportamento de tempo de design de seu
controle personalizado. Depois de determinar que o ambiente de depuração está
configurado corretamente, você testará a associação entre o controle personalizado e o
designer personalizado.
Nesse ponto, tudo está preparado para você desenvolver e depurar seu controle
personalizado e o respectivo designer personalizado associado. O restante deste artigo
se concentra nos detalhes da implementação de recursos do controle e do designer.
IMarqueeWidget .
C#
C#
control.PerformLayout();
}
}
}
MarqueeBorder : esse controle pinta uma borda de "luzes" em torno das próprias
bordas. As luzes piscam em sequência, por isso elas parecem se mover em torno
da borda. A velocidade na qual as luzes piscam é controlada por uma propriedade
chamada UpdatePeriod . Várias outras propriedades personalizadas determinam
outros aspectos da aparência do controle. Dois métodos, chamados StartMarquee
e StopMarquee , controlam quando a animação começa e para.
MarqueeText : esse controle pinta uma cadeia de caracteres piscando. Assim como
C#
C#
"MarqueeText".
C#
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
using System.Windows.Forms.Design;
C#
[ToolboxItemFilter("MarqueeControlLibrary.MarqueeText",
ToolboxItemFilterType.Require)]
public partial class MarqueeText : Label, IMarqueeWidget
{
9. Declare as variáveis de instância que correspondem às propriedades expostas e
inicialize-as no construtor. O campo isLit determina se o texto será pintado na
cor fornecida pela propriedade LightColor .
C#
public MarqueeText()
{
// This call is required by the Windows.Forms Form Designer.
InitializeComponent();
[Category("Marquee")]
[Browsable(true)]
public int UpdatePeriod
{
get
{
return this.updatePeriodValue;
}
set
{
if (value > 0)
{
this.updatePeriodValue = value;
}
else
{
throw new ArgumentOutOfRangeException("UpdatePeriod", "must
be > 0");
}
}
}
C#
[Category("Marquee")]
[Browsable(true)]
public Color LightColor
{
get
{
return this.lightColorValue;
}
set
{
// The LightColor property is only changed if the
// client provides a different value. Comparing values
// from the ToArgb method is the recommended test for
// equality between Color structs.
if (this.lightColorValue.ToArgb() != value.ToArgb())
{
this.lightColorValue = value;
this.lightBrush = new SolidBrush(value);
}
}
}
[Category("Marquee")]
[Browsable(true)]
public Color DarkColor
{
get
{
return this.darkColorValue;
}
set
{
// The DarkColor property is only changed if the
// client provides a different value. Comparing values
// from the ToArgb method is the recommended test for
// equality between Color structs.
if (this.darkColorValue.ToArgb() != value.ToArgb())
{
this.darkColorValue = value;
this.darkBrush = new SolidBrush(value);
}
}
}
C#
C#
Como o MarqueeBorder controle pode ter controles filho, ele precisa estar ciente dos
Layout eventos.
"MarqueeBorder".
C#
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Design;
using System.Threading;
using System.Windows.Forms;
using System.Windows.Forms.Design;
C#
[Designer(typeof(MarqueeControlLibrary.Design.MarqueeBorderDesigner ))]
[ToolboxItemFilter("MarqueeControlLibrary.MarqueeBorder",
ToolboxItemFilterType.Require)]
public partial class MarqueeBorder : Panel, IMarqueeWidget
{
C#
C#
public MarqueeBorder()
{
// This call is required by the Windows.Forms Form Designer.
InitializeComponent();
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
}
C#
[Category("Marquee")]
[Browsable(true)]
public virtual int UpdatePeriod
{
get
{
return this.updatePeriodValue;
}
set
{
if (value > 0)
{
this.updatePeriodValue = value;
}
else
{
throw new ArgumentOutOfRangeException("UpdatePeriod", "must
be > 0");
}
}
}
C#
[Category("Marquee")]
[Browsable(true)]
public int LightSize
{
get
{
return this.lightSizeValue;
}
set
{
if (value > 0 && value <= MaxLightSize)
{
this.lightSizeValue = value;
this.DockPadding.All = 2 * value;
}
else
{
throw new ArgumentOutOfRangeException("LightSize", "must be
> 0 and < MaxLightSize");
}
}
}
[Category("Marquee")]
[Browsable(true)]
public int LightPeriod
{
get
{
return this.lightPeriodValue;
}
set
{
if (value > 0)
{
this.lightPeriodValue = value;
}
else
{
throw new ArgumentOutOfRangeException("LightPeriod", "must
be > 0 ");
}
}
}
[Category("Marquee")]
[Browsable(true)]
public Color LightColor
{
get
{
return this.lightColorValue;
}
set
{
// The LightColor property is only changed if the
// client provides a different value. Comparing values
// from the ToArgb method is the recommended test for
// equality between Color structs.
if (this.lightColorValue.ToArgb() != value.ToArgb())
{
this.lightColorValue = value;
this.lightBrush = new SolidBrush(value);
}
}
}
[Category("Marquee")]
[Browsable(true)]
public Color DarkColor
{
get
{
return this.darkColorValue;
}
set
{
// The DarkColor property is only changed if the
// client provides a different value. Comparing values
// from the ToArgb method is the recommended test for
// equality between Color structs.
if (this.darkColorValue.ToArgb() != value.ToArgb())
{
this.darkColorValue = value;
this.darkBrush = new SolidBrush(value);
}
}
}
[Category("Marquee")]
[Browsable(true)]
public int LightSpacing
{
get
{
return this.lightSpacingValue;
}
set
{
if (value >= 0)
{
this.lightSpacingValue = value;
}
else
{
throw new ArgumentOutOfRangeException("LightSpacing", "must
be >= 0");
}
}
}
[Category("Marquee")]
[Browsable(true)]
[EditorAttribute(typeof(LightShapeEditor),
typeof(System.Drawing.Design.UITypeEditor))]
public MarqueeLightShape LightShape
{
get
{
return this.lightShapeValue;
}
set
{
this.lightShapeValue = value;
}
}
[Category("Marquee")]
[Browsable(true)]
public MarqueeSpinDirection SpinDirection
{
get
{
return this.spinDirectionValue;
}
set
{
this.spinDirectionValue = value;
}
}
C#
O método DrawLight desenha uma luz usando a cor, forma e posição apropriadas.
C#
return (
(lightIndex + directionFactor * this.currentOffset) %
this.lightPeriodValue == 0
);
}
C#
base.OnPaint(e);
xPos += increment;
lightCounter++;
}
// Draw the lights flush with the right edge of the control.
xPos = this.Width - this.lightSizeValue;
yPos += increment;
lightCounter++;
}
// Draw the lights flush with the bottom edge of the control.
yPos = this.Height - this.lightSizeValue;
xPos -= increment;
lightCounter++;
}
// Draw the lights flush with the left edge of the control.
xPos = 0;
yPos -= increment;
lightCounter++;
}
}
}
PreFilterProperties
PostFilterProperties
PreFilterAttributes
PostFilterAttributes
PreFilterEvents
PostFilterEvents
Aderir a essas regras garante que todos os designers no ambiente de tempo de design
tenham uma exibição consistente de todos os componentes que estão sendo criados.
C#
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Windows.Forms;
using System.Windows.Forms.Design;
interação pai-filho.
C#
namespace MarqueeControlLibrary.Design
{
public class MarqueeBorderDesigner : ParentControlDesigner
{
C#
if (properties.Contains("Padding"))
{
properties.Remove("Padding");
}
properties["Visible"] = TypeDescriptor.CreateProperty(
typeof(MarqueeBorderDesigner),
(PropertyDescriptor)properties["Visible"],
new Attribute[0]);
properties["Enabled"] = TypeDescriptor.CreateProperty(
typeof(MarqueeBorderDesigner),
(PropertyDescriptor)properties["Enabled"],
new Attribute[0]);
}
5. Implemente as propriedades e Visible as Enabled propriedades. Essas
implementações fazem sombreamento das propriedades do controle.
C#
Você adquire uma referência a esse serviço consultando o ambiente com o GetService
método. Se a consulta for bem-sucedida, o designer poderá anexar um manipulador
para o ComponentChanged evento e executar todas as tarefas necessárias para manter
um estado consistente no tempo de design.
C#
base.Initialize(component);
IComponentChangeService cs =
GetService(typeof(IComponentChangeService))
as IComponentChangeService;
if (cs != null)
{
cs.ComponentChanged +=
new ComponentChangedEventHandler(OnComponentChanged);
}
C#
Você adicionará dois verbos do designer a seus designers: Executar Teste e Parar Teste.
Esses verbos permitirão que você exiba o comportamento em tempo de execução de
MarqueeControl em tempo de design. Esses verbos serão adicionados a
MarqueeControlRootDesigner .
C#
c.Start();
}
c.Stop();
}
C#
this.Verbs.Add(
new DesignerVerb("Run Test",
new EventHandler(OnVerbRunTest))
);
this.Verbs.Add(
new DesignerVerb("Stop Test",
new EventHandler(OnVerbStopTest))
);
C#
C#
C#
C#
if (editorService != null)
{
LightShapeSelectionControl selectionControl =
new LightShapeSelectionControl(
(MarqueeLightShape)value,
editorService);
editorService.DropDownControl(selectionControl);
value = selectionControl.LightShape;
}
return value;
}
C#
using System.Windows.Forms.Design;
C#
private void squarePanel_Click(object sender, EventArgs e)
{
this.lightShapeValue = MarqueeLightShape.Square;
this.Invalidate( false );
this.editorService.CloseDropDown();
}
this.Invalidate( false );
this.editorService.CloseDropDown();
}
C#
C#
C#
C#
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
C#
set
{
if( this.lightShapeValue != value )
{
this.lightShapeValue = value;
}
}
}
C#
using(
Graphics gSquare = this.squarePanel.CreateGraphics(),
gCircle = this.circlePanel.CreateGraphics() )
{
// Draw a filled square in the client area of
// the squarePanel control.
gSquare.FillRectangle(
Brushes.Red,
0,
0,
this.squarePanel.Width,
this.squarePanel.Height
);
5. Compile a solução.
6. Clique com o botão direito do mouse no DemoMarqueeControl e, do menu de
atalho, selecione a opção Executar Teste para iniciar a animação. Clique em Parar
Teste para interromper a animação.
respectivamente.
C#
Próximas etapas
O MarqueeControlLibrary demonstra uma implementação simples de controles
personalizados e designers associados. Você pode tornar esse exemplo mais sofisticado
de várias maneiras:
Altere os valores da propriedade para DemoMarqueeControl no designer. Adicione
mais controles MarqueBorder e encaixe-os dentro das respectivas instâncias pai
para criar um efeito aninhado. Faça experiências com configurações diferentes
para o UpdatePeriod e as propriedades relacionadas à luz.
Licencie o MarqueeControl .
Confira também
UserControl
ParentControlDesigner
DocumentDesigner
IRootDesigner
DesignerVerb
UITypeEditor
BackgroundWorker
Como criar controles para Windows
Forms
Artigo • 02/06/2023
Criar um controle
1. Determine o que o controle deverá realizar ou qual será o papel executado por ele
no aplicativo. Os fatores a serem considerados incluem:
10. Empacote e implante o controle. Para obter detalhes, consulte Primeiro olhar para
a implantação no Visual Studio.
Confira também
Como: Herdar da classe UserControl
Como: Herdar da classe Control
Como herdar de controles dos Windows Forms existentes
Como: Testar o comportamento de tempo de execução de um UserControl
Variedades de controles personalizados
Como criar controles compostos
Artigo • 02/06/2023
O projeto deve ser criado para que os controles personalizados apareçam na Caixa
de Ferramentas.
4. Compile a DLL.
Confira também
Passo a passo: criando um controle composto
Passo a passo: Herdando de um controle Windows Forms
Recomendações do tipo de controle
Como Criar Controles para o Windows Forms
Variedades de controles personalizados
Como: Herdar da classe UserControl
Artigo • 02/06/2023
3. Esses controles devem ser posicionados e projetados como se deseja que eles
apareçam no controle de usuário final. Se quiser permitir que os desenvolvedores
acessem os controles constituintes, será preciso declará-los como públicos ou
exibir seletivamente as propriedades do controle constituinte. Para mais detalhes,
consulte Como expor propriedades de controles constituintes.
Confira também
Variedades de controles personalizados
Como: Herdar da classe Control
Como herdar de controles dos Windows Forms existentes
Como Criar Controles para o Windows Forms
Solucionar problemas de manipuladores de eventos herdados no Visual Basic
Como: Testar o comportamento de tempo de execução de um UserControl
Como herdar de controles dos Windows
Forms existentes
Artigo • 02/06/2023
C#
public partial class CustomControl1 : System.Windows.Forms.Button
7 Observação
C#
Confira também
Variedades de controles personalizados
Como: Herdar da classe Control
Como: Herdar da classe UserControl
Como Criar Controles para o Windows Forms
Solucionando problemas de manipuladores de eventos herdados no Visual Basic
Passo a passo: herdando de um controle de Windows Forms
Como: Herdar da classe Control
Artigo • 02/06/2023
5. Localize o OnPaint método, que estará vazio, exceto por uma chamada para o
OnPaint método da classe base.
Para obter informações sobre como escrever código para renderizar elementos
gráficos para controles, consulte Pintura e renderização de controle personalizado.
Você pode fazer com que o controle se alinhe à borda dos formulários definindo o valor
da Dock propriedade. Essa propriedade determina onde reside o controle no formulário.
A Dock propriedade pode ser definida com os seguintes valores:
None Não encaixa em nenhum lugar e aparece no local especificado por ele Location.
Esses valores também podem ser definidos no código. Para obter mais informações,
consulte Como alinhar um controle às bordas de formulários.
Confira também
Control.Dock
Control.Anchor
Como: Alinhar um controle às bordas de formulários
Instruções passo a passo: organizando controles no Windows Forms usando guias
de alinhamento
Como ancorar controles no Windows Forms
Como ancorar e encaixar controles filho em um controle TableLayoutPanel
Como: Ancorar e encaixar controles filho em um controle FlowLayoutPanel
Passo a passo: organizando controles nos Windows Forms usando um
TableLayoutPanel
Passo a passo: Organizando controles nos Windows Forms utilizando um
FlowLayoutPanel
Desenvolvendo controles do Windows Forms no tempo de design
Como exibir um controle na caixa de
diálogo Escolher Itens da Caixa de
Ferramentas
Artigo • 02/06/2023
Para exibir seu controle na caixa de diálogo Escolher Itens da Caixa de Ferramentas:
-ou-
Confira também
Desenvolvendo controles do Windows Forms no tempo de design
Como instalar um assembly no cache de assembly global
Passo a passo: Preencher de forma automática a caixa de ferramentas com
componentes personalizados
Como: Fornecer um bitmap da caixa de
ferramentas para um controle
Artigo • 02/06/2023
Se você quiser que um ícone especial para seu controle apareça na caixa de
ferramentas do Visual Studio, você poderá especificar uma imagem específica usando o
ToolboxBitmapAttribute. Esta classe é um atributo, um tipo especial de classe que você
pode anexar a outras classes. Para obter mais informações sobre atributos, consulte a
visão geral de atributos (Visual Basic) para Visual Basic ou Atributos (C#) para C#.
C#
2. Recompile o projeto.
7 Observação
Confira também
ToolboxBitmapAttribute
Passo a passo: Preencher de forma automática a caixa de ferramentas com
componentes personalizados
Desenvolvendo controles do Windows Forms no tempo de design
Visão geral de atributos (Visual Basic)
Atributos (C#)
Como testar o comportamento em
tempo de execução de um UserControl
Artigo • 02/06/2023
) Importante
Para que o contêiner de teste carregue o seu UserControl, o controle deve ter pelo
menos um construtor público.
7 Observação
Confira também
UserControl
Como: Criar controles compostos
Passo a passo: criando um controle composto
Designer de Controle de Usuário
página de erro do Designer Windows
Forms
Artigo • 21/03/2023
Você pode optar por ignorar os erros e continuar carregando o designer clicando em
Ignorar e Continuar. Essa ação pode resultar em um comportamento inesperado, por
exemplo, os controles podem não aparecer na superfície de design.
Você especificou um nome para um formulário herdado que já existe no projeto. Para
corrigir esse erro, dê ao formulário herdado um nome exclusivo.
O Visual Studio tentou carregar um designer registrado para o tipo de arquivo, mas não
pôde. Isso provavelmente ocorre devido a um erro que ocorreu durante a instalação.
Entre em contato com o fornecedor do idioma que você está usando para obter uma
correção.
Esse erro surgirá se você tentar abrir um arquivo que já esteja aberto em outro editor. O
editor que já tem o arquivo aberto é mostrado. Para corrigir esse erro, feche o editor
que tem o arquivo aberto e tente novamente.
Essa mensagem de erro surge quando você tenta abrir um arquivo que não pôde ser
aberto. Verifique se o arquivo existe e se é um assembly válido.
Para corrigir esse erro, verifique se o código não tem uma dependência recursiva. Se
estiver livre desses problemas, observe o texto exato da mensagem de erro e entre em
contato com o fornecedor do componente.
Esse erro ocorreu porque uma referência não foi encontrada. Verifique se o tipo
indicado na mensagem de erro é referenciado e se todos os assemblies exigidos pelo
tipo também são referenciados. Muitas vezes, o problema é que um controle na solução
não foi criado. Para compilar, selecione Compilar Solução no menu Compilar . Caso
contrário, se o controle já tiver sido criado, adicione uma referência manualmente no
menu de clique com o botão direito do mouse da pasta Referências ou Dependências
no Gerenciador de Soluções.
Esta é uma mensagem de erro geral para problemas que surgem durante a análise.
Esses erros geralmente ocorrem devido a erros de sintaxe. Consulte a Lista de Tarefas
para obter mensagens específicas relacionadas ao erro.
Para corrigir esse erro, remova todas, exceto uma das definições parciais da classe do
arquivo.
Esse erro é semelhante a "O tipo '<type name>' não pôde ser encontrado", mas esse
erro geralmente ocorre devido a um atributo de metadados. Para corrigir esse erro,
verifique se todos os assemblies usados pelos atributos são referenciados.
O idioma em uso registrou uma classe de designer que não deriva da classe base
correta. Entre em contato com o fornecedor do idioma que você está usando.
Para corrigir esse erro, verifique se a propriedade especificada no erro não é nula.
Um serviço exigido pelo Visual Studio não está disponível. Se você estava tentando
carregar um projeto que não dá suporte a esse designer, use o Editor de Código para
fazer as alterações necessárias. Caso contrário, se você vir esse erro, registre um
problema usando Relatar um problema.
Esse erro ocorre quando o Visual Studio não consegue editar um arquivo devido a
problemas de espaço em disco ou memória ou o arquivo é marcado como somente
leitura.
O objeto enumerados da caixa de ferramentas só dá
suporte para recuperar um item de cada vez
Se você vir esse erro, se vir esse erro, registre um problema usando Relatar um
problema.
Esse erro ocorrerá se os dados dentro do item Caixa de Ferramentas forem corrompidos
ou a versão do componente tiver sido alterada. Tente remover o item da Caixa de
Ferramentas e adicioná-lo novamente.
Para corrigir esse erro, use um construtor diferente ou converta explicitamente os tipos
de parâmetro de modo que correspondam aos fornecidos pelo construtor.
O Visual Studio não pode adicionar uma referência. Para corrigir esse erro, verifique se
uma versão diferente da referência ainda não foi referenciada.
Esse erro surge quando você altera um arquivo que está atualmente com check-in no
controle do código-fonte. Normalmente, o Visual Studio apresenta a caixa de diálogo
de check-out de arquivo para que o usuário possa fazer check-out do arquivo. Desta
vez, o arquivo não foi verificado, talvez devido a um conflito de mesclagem durante o
check-out. Para corrigir esse erro, verifique se o arquivo não está bloqueado e tente
fazer check-out do arquivo manualmente.
Veja também
Desenvolver controles Windows Forms usando o designer
Fórum do designer do Windows Forms
Solucionar problemas de criação de
controle e de componente
Artigo • 02/06/2023
STAThreadAttribute
3. Se o controle estiver listado na caixa de diálogo, confirme que ele está selecionado
e, em seguida, clique em OK.
C#
Para obter mais informações sobre depuração, consulte Depuração no Visual Studio e
Passo a passo: depurando personalizar controles personalizados do Windows Forms no
tempo de design.
STAThreadAttribute
Ele STAThreadAttribute informa ao CLR (Common Language Runtime) que Windows
Forms usa o modelo de apartamento de thread único. Você poderá perceber um
comportamento não intencional se não aplicar esse atributo ao método Main do
aplicativo do Windows Forms. Por exemplo, as imagens em segundo plano podem não
aparecer para controles como ListView. Alguns controles também podem exigir esse
atributo para um comportamento correto de Preenchimento Automático e do tipo
"arrastar e soltar".
Confira também
Desenvolvendo controles do Windows Forms no tempo de design
Passo a passo: Preencher de forma automática a caixa de ferramentas com
componentes personalizados
Como: Testar o comportamento de tempo de execução de um UserControl
Passo a passo: depurando controles personalizados dos Windows Forms em
tempo de Design