none
Quebrar linha após gerar um button RRS feed

  • Pergunta

  • Bom dia amigos.

    Estou gerando botões em tempo de execução com C# em Windows Forms

    mas eles ficam alinhados a direita, um ao lado do outro.

    Como faço para colocar um embaixo do outro?

    Grato

    terça-feira, 1 de dezembro de 2015 12:17

Respostas

  • Você poderia postar a lógica que está usando para criar os botoes? Para ficar mais fácil ajudar...

    de qualquer forma..

    segue trecho de código que faz o que você pediu... caso tenha dúvidas, poste que dou um auxilio.. 

    no exemplo que eu fiz eu coloquei no Load do form 

     int y = 20;
                int incremento = 30;
                for (int i = 0; i < 5; i++)
                {                
                    var botao1 = new System.Windows.Forms.Button();
                    botao1.Location = new System.Drawing.Point(12, y);
                    botao1.Name = "botao"+ i;
                    botao1.Size = new System.Drawing.Size(75, 23);
                    botao1.TabIndex = 1;
                    botao1.Text = "Botao " + i;
                    botao1.UseVisualStyleBackColor = true;
                    this.Controls.Add(botao1);
                    y = y + incremento;
                }

    neste exemplo a variavel y vai controlando a posição para baixo de cada botão.

    e aqui: 

    y = y + incremento;

    incrementa um valor para que o próximo botão fique mais abaixo.

    abraço

    • Editado DANIEL DANNA terça-feira, 1 de dezembro de 2015 13:07
    • Marcado como Resposta Marcos SJ terça-feira, 1 de dezembro de 2015 13:27
    terça-feira, 1 de dezembro de 2015 13:05

Todas as Respostas

  • Você poderia postar a lógica que está usando para criar os botoes? Para ficar mais fácil ajudar...

    de qualquer forma..

    segue trecho de código que faz o que você pediu... caso tenha dúvidas, poste que dou um auxilio.. 

    no exemplo que eu fiz eu coloquei no Load do form 

     int y = 20;
                int incremento = 30;
                for (int i = 0; i < 5; i++)
                {                
                    var botao1 = new System.Windows.Forms.Button();
                    botao1.Location = new System.Drawing.Point(12, y);
                    botao1.Name = "botao"+ i;
                    botao1.Size = new System.Drawing.Size(75, 23);
                    botao1.TabIndex = 1;
                    botao1.Text = "Botao " + i;
                    botao1.UseVisualStyleBackColor = true;
                    this.Controls.Add(botao1);
                    y = y + incremento;
                }

    neste exemplo a variavel y vai controlando a posição para baixo de cada botão.

    e aqui: 

    y = y + incremento;

    incrementa um valor para que o próximo botão fique mais abaixo.

    abraço

    • Editado DANIEL DANNA terça-feira, 1 de dezembro de 2015 13:07
    • Marcado como Resposta Marcos SJ terça-feira, 1 de dezembro de 2015 13:27
    terça-feira, 1 de dezembro de 2015 13:05
  • Obrigado Daniel.

    Faço assim

                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
    
                       
                        flowLayoutPanel1.AutoSize = true;
                       Button b = new Button();
                       b.Name = i.ToString();
    b.Text = i.ToString();
    }

    Seu código não deu muito certo,

    A lógica é pegar a posição e a cada interação do loop adicionar um valor diferente no "position" do botão?

    terça-feira, 1 de dezembro de 2015 15:53
  • Eu esqueci de mencionar,

    faço dentro de um flowLayoutPanel

    terça-feira, 1 de dezembro de 2015 16:14
  • Consegui,  o problema é que o esperto aqui não estava definindo certinho a posição.

    muito obrigado

    terça-feira, 1 de dezembro de 2015 16:43