Passo a passo: organizando controles nos Windows Forms usando um TableLayoutPanel
Alguns aplicativos exigem um formulário com um layout que se organiza adequadamente à medida que o formulário é redimensionado ou conforme o tamanho do conteúdo é alterado. Quando você precisar de um layout dinâmico e não quiser lidar com Layout eventos explicitamente em seu código, considere usar um painel de layout.
O FlowLayoutPanel controle e o TableLayoutPanel controle fornecem maneiras intuitivas de organizar os controles em seu formulário. Ambos fornecem uma capacidade automática e configurável de controlar as posições relativas dos controles filho contidos neles e ambos oferecem recursos de layout dinâmico em tempo de execução, para que eles possam redimensionar e reposicionar os controles filho conforme as dimensões do formulário pai se alteram. Os painéis de layout podem ser aninhados em painéis de layout, para permitir a realização de interfaces do usuário sofisticadas.
O organiza FlowLayoutPanel seu conteúdo em uma direção de fluxo específica: horizontal ou vertical. Seu conteúdo pode ser encapsulado de uma linha à outra ou de uma coluna à próxima. Como alternativa, seu conteúdo pode ser recortado, em vez de encapsulado. Para obter mais informações, consulte Passo a passo: organizando controles nos Windows Forms usando um FlowLayoutPanel.
O TableLayoutPanel organiza seu conteúdo em uma grade, fornecendo funcionalidade semelhante ao elemento de tabela> HTML<. O TableLayoutPanel controle permite que você coloque controles em um layout de grade sem exigir que você especifique com precisão a posição de cada controle individual. Suas células são organizadas em linhas e colunas, que podem ter diferentes tamanhos. As células podem ser mescladas entre linhas e colunas. As células podem conter qualquer coisa que um formulário pode conter e se comportam, na maioria de outros aspectos, como contêineres.
O TableLayoutPanel controle também fornece um recurso de redimensionamento proporcional em tempo de execução, para que seu layout possa ser alterado sem problemas à medida que seu formulário é redimensionado. Isso torna o TableLayoutPanel controle adequado para fins como formulários de entrada de dados e aplicativos localizados. Para obter mais informações, consulte Passo a passo: criando um Windows Form redimensionável para entrada de dados e Passo a passo: criando um Windows Form localizável.
Em geral, você não deve usar um TableLayoutPanel controle como um contêiner para todo o layout. Use TableLayoutPanel controles para fornecer recursos de redimensionamento proporcional a partes do layout.
As tarefas ilustradas neste passo a passo incluem:
Criação de um projeto dos Windows Forms
Organização de controles em linhas e colunas
Configuração de propriedades de linha e coluna
Extensão de linhas e colunas com um controle
Manipulação automática de estouros
Inserindo controles ao clicar duas vezes neles na caixa de ferramentas
Inserindo um controle ao desenhar seu contorno
Reatribuição de controles existentes a um pai diferente
Ao terminar, você terá um entendimento da função desempenhada por esses importantes recursos de layout.
Criando o Projeto
A primeira etapa é criar o projeto e configurar o formulário.
Para criar o projeto
Crie um projeto de aplicativo do Windows chamado "TableLayoutPanelExample". Para obter mais informações, consulte Como criar um projeto de aplicativo do Windows Forms.
Selecione o formulário no Designer de Formulários do Windows.
Organização de controles em linhas e colunas
O TableLayoutPanel controle permite que você organize facilmente os controles em linhas e colunas.
Para organizar controles em linhas e colunas utilizando um TableLayoutPanel
Arraste um TableLayoutPanel controle da Caixa de Ferramentas para o formulário. Observe que, por padrão, o TableLayoutPanel controle tem quatro células.
Arraste um Button controle da Caixa de Ferramentas para o TableLayoutPanel controle e solte-o em uma das células. Observe que o Button controle é criado dentro da célula selecionada.
Arraste mais Button três controles da Caixa de Ferramentas para o TableLayoutPanel controle, de modo que cada célula contenha um botão.
Pegue na alça de dimensionamento vertical entre as duas colunas e mova-a para a esquerda. Observe que os Button controles na primeira coluna são redimensionados para uma largura menor, enquanto o tamanho dos Button controles na segunda coluna permanece inalterado.
Pegue na alça de dimensionamento vertical entre as duas colunas e mova-a para a direita. Observe que os Button controles na primeira coluna retornam ao seu tamanho original, enquanto os Button controles na segunda coluna são movidos para a direita.
Mova a alça de dimensionamento horizontal para cima e para baixo para ver o efeito sobre os controles no painel.
Posicionando controles dentro de células usando o encaixe e a ancoragem
O comportamento de ancoragem dos controles filho em a TableLayoutPanel difere do comportamento em outros controles de contêiner. O comportamento de ancoragem de controles filho é igual a outras caixas de controles.
Posicionando controles em células
Selecione o primeiro controle Button. Altere o valor de sua Dock propriedade para Fill. Observe que o Button controle se expande para preencher sua célula.
Selecione um dos outros Button controles. Altere o valor de sua Anchor propriedade para Right. Observe que ele é movido para que sua borda direita fique próxima à borda direita da célula. A distância entre as bordas é a soma da propriedade do Button Margin controle e da propriedade do Padding painel.
Altere o valor da propriedade do Button Anchor controle para Right e Left. Observe que o controle é dimensionado para a largura da célula, com os Margin valores e Padding levados em consideração.
Configuração de propriedades de linha e coluna
Você pode definir propriedades individuais de linhas e colunas usando as RowStyles coleções e ColumnStyles .
Para definir as propriedades de linha e coluna
Selecione o TableLayoutPanel controle no Designer de Formulários do Windows.
Nas janelas Propriedades, abra a ColumnStyles coleção clicando no botão de reticências () ao lado da entrada Colunas.
Selecione a primeira coluna e altere o valor de sua SizeType propriedade para AutoSize. Clique em OK para aceitar a alteração. Observe que a largura da primeira coluna é reduzida para caber no Button controle. Observe também que a largura da coluna não é redimensionável.
Na janela Propriedades, abra a ColumnStyles coleção e selecione a primeira coluna. Altere o valor de sua SizeType propriedade para Percent. Clique em OK para aceitar a alteração. Redimensione o TableLayoutPanel controle para uma largura maior e observe que a largura da primeira coluna se expande. Redimensione o TableLayoutPanel controle para uma largura menor e observe que os botões na primeira coluna são dimensionados para caber na célula. Observe também que a largura da coluna é redimensionável.
Na janela Propriedades, abra a ColumnStyles coleção e selecione todas as colunas listadas. Defina o valor de cada SizeType propriedade como Percent. Clique em OK para aceitar a alteração. Repita com a RowStyles coleção.
Pegue uma das alças de redimensionamento de canto e redimensione a largura e a TableLayoutPanel altura do controle. Observe que as linhas e colunas são redimensionadas à medida que o TableLayoutPanel tamanho do controle muda. Observe também que as linhas e colunas são redimensionáveis com as alças de dimensionamento horizontal e vertical.
Extensão de linhas e colunas com um controle
O TableLayoutPanel controle adiciona várias novas propriedades aos controles em tempo de design. Duas dessas propriedades são a RowSpan
e ColumnSpan
. Você pode usar essas propriedades para fazer um controle estender-se por mais de uma linha ou coluna.
Para estender linhas e colunas com um controle
Selecione o Button controle na primeira linha e na primeira coluna.
Na janela Propriedades, altere o valor da propriedade
ColumnSpan
para 2. Observe que o Button controle preenche a primeira coluna e a segunda coluna. Observe também que uma linha extra foi adicionada para acomodar essa alteração.Repita a etapa 2 para a propriedade
RowSpan
.
Inserindo controles ao clicar duas vezes neles na caixa de ferramentas
Você pode preencher seu TableLayoutPanel controle clicando duas vezes nos controles na Caixa de Ferramentas.
Para inserir controles clicando duas vezes na caixa de ferramentas
Arraste um TableLayoutPanel controle da Caixa de Ferramentas para o formulário.
Clique duas vezes no Button ícone de controle na Caixa de Ferramentas. Observe que um novo controle de botão aparece na primeira célula do TableLayoutPanel controle.
Clique duas vezes em vários outros controles na Caixa de ferramentas. Observe que os novos controles aparecem sucessivamente nas células desocupadas do TableLayoutPanel controle. Observe também que o TableLayoutPanel controle se expande para acomodar os novos controles se nenhuma célula aberta estiver disponível.
Manipulação automática de estouros
Ao inserir controles no TableLayoutPanel controle, você pode ficar sem células vazias para seus novos controles. O TableLayoutPanel controle lida com essa situação automaticamente, aumentando o número de células.
Observar a manipulação automática de estouros
Se ainda houver células vazias no TableLayoutPanel controle, continue inserindo novos Button controles até que o TableLayoutPanel controle esteja cheio.
Quando o TableLayoutPanel controle estiver cheio, clique duas vezes no Button ícone na Caixa de Ferramentas para inserir outro Button controle. Observe que o TableLayoutPanel controle cria novas células para acomodar o novo controle. Insira mais alguns controles e observe o comportamento de redimensionamento.
Altere o valor da propriedade TableLayoutPanel do controle GrowStyle para FixedSize. Clique duas vezes no Button ícone na Caixa de Ferramentas para inserir Button controles até que o TableLayoutPanel controle esteja cheio. Clique duas vezes no Button ícone na Caixa de Ferramentas novamente. Observe que você receberá uma mensagem de erro do Designer de Formulários do Windows, informando que não possível criar mais linhas e colunas.
Inserindo um controle ao desenhar seu contorno
Você pode inserir um controle em um TableLayoutPanel controle e especificar seu tamanho desenhando seu contorno em uma célula.
Para inserir um controle desenhando seu contorno
Arraste um TableLayoutPanel controle da Caixa de Ferramentas para o formulário.
Na Caixa de Ferramentas, clique no ícone de Button controle. Não o arraste para o formulário.
Mova o ponteiro do mouse sobre o TableLayoutPanel controle. Observe que o ponteiro muda para uma cruz com o ícone de Button controle anexado.
Clique e mantenha o botão do mouse pressionado.
Arraste o ponteiro do mouse para desenhar a estrutura de tópicos do Button controle. Quando estiver satisfeito com o tamanho, solte o botão do mouse. Observe que o Button controle é criado na célula na qual você desenhou o contorno do controle.
Vários controles dentro de células não são permitidos
O TableLayoutPanel controle pode conter apenas um controle filho por célula.
Para demonstrar que vários controles dentro de células não são permitidos
- Arraste um Button controle da Caixa de Ferramentas para o TableLayoutPanel controle e solte-o em uma das células ocupadas. Observe que o TableLayoutPanel controle não permite que você solte o Button controle na célula ocupada.
Trocando controles
O TableLayoutPanel controle permite que você troque os controles que ocupam duas células diferentes.
Para trocar controles
- Arraste um dos Button controles de uma célula ocupada e solte em outra célula ocupada. Observe que os dois controles são movidos de uma célula para a outra.
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:
Tente redimensionar um dos Button controles para um tamanho maior e observe o efeito no layout.
Cole uma seleção de vários controles no TableLayoutPanel controle e observe como os controles são inseridos.
Os painéis de layout podem conter outros painéis de layout. Experimente descartar um TableLayoutPanel controle no controle existente.
Encaixe o TableLayoutPanel controle no formulário pai. Redimensione o formulário e observe o efeito no layout.
Confira também
- FlowLayoutPanel
- TableLayoutPanel
- Passo a passo: organizando controles nos Windows Forms utilizando um FlowLayoutPanel
- Passo a passo: organizando controles nos Windows Forms usando linhas 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 nos Windows Forms
- Como ancorar controles nos Windows Forms
- Passo a passo: definindo o layout de controles dos Windows Forms com preenchimento, margens e a propriedade AutoSize
.NET Desktop feedback