C# - Gerando um TableLayoutPanel dinamicamente


Hoje vou mostrar como gerar um TableLayoutPanel de forma dinâmica.

O controle TableLayoutPanel é um ótimo controle para organizar outros controles em um formulário do Windows. 

A maioria dos desenvolvedores apenas geram todas as linhas e colunas do designer e nunca tratam com o controle novamente em tempo de execução.

Ao contrário dos controles ListBox e ListView, alterar as Linhas e Colunas em tempo de execução não é tão óbvio no TableLayoutPanel.

Neste artigo veremos como trabalhar com este controle de forma dinâmica.

Vamos criar um novo projeto do tipo Windows Forms Application no VS 2017 Community com o nome WF_TableLayoutPanel;

A seguir inclua os controles abaixo no formulário Form1.cs:

Disponha os controles conforme o leiaute abaixo:

Agora inclua o método GeraTabela() no formulário (ou em uma classe) com o código abaixo:

       private void GeraTabela(int coluna, int linha)
        {
            //Limpa os controles existentes
            tlp1.Controls.Clear();
            //limpa os estilos das linhas e colunas
            tlp1.ColumnStyles.Clear();
            tlp1.RowStyles.Clear();
            //Gera a tabela 
            tlp1.ColumnCount = coluna;
            tlp1.RowCount = linha;
            for (int x = 0; x < coluna; x++)
            {
                //adiciona uma coluna
                tlp1.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
                for (int y = 0; y < linha; y++)
                {
                    //adiciona uma linha
                    if (x == 0)
                    {
                        tlp1.RowStyles.Add(new RowStyle(SizeType.AutoSize));
                    }
                    //Cria um contole no interior da célula
                    Button cmd = new Button();
                    //posicina o controle corretamente
                    cmd.Text = string.Format("({0}, {1})", x, y);
                    cmd.BackColor = Color.Magenta;
                    cmd.ForeColor = Color.White;
                    tlp1.Controls.Add(cmd, x, y);
                }
            }
        }

Este código cria uma tabela do tipo TableLayoutPanel com o número de linhas e colunas especificado e inclui um controle Button no interior de cada célula do controle.

Executando o projeto teremos:


 
Simples assim...

Pegue o código completo do projeto aqui:  WF_TableLayouPanel.zip

"Palavra fiel é esta: que, se morrermos com ele, também com ele viveremos;
Se sofrermos, também com ele reinaremos; se o negarmos, também ele nos negará;
Se formos infiéis, ele permanece fiel; não pode negar-se a si mesmo."
2 Timóteo 2:11-13

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Referências:


José Carlos Macoratti