none
Duvida em estrutura de repetição RRS feed

  • Pergunta

  • Minha dúvida é a seguinte, tenho vários GroupBox na minha tela e estes GroupBox vão receber mudar o NAME deles conforme um valor do meu banco de dados.

    Por exemplo:

    GroupBox1.Text= ValordoBanco;
    Groupbox2.Text=ValordoBanco;

    Porém tenho 80 GroupBox, como faria isto em uma estrutura de repetição para não ter que alterar as propriedades uma por uma.

    Comecei criar algo assim, mas não consigo alterar o Groupbox dinamicamente.

    int cont = 0; string gb, lbl, pic1, pic2; /// gbXX (group box) lblXX (label) picXX_1 (PictureBox 1) picXX_2 (PictureBox 2) foreach (DataRow dr in dtDados.Tables[0].Rows) { cont++; gb = "gp" + cont.ToString().Trim();//Nome dos meus groupbox estao gb1,gb2...gb80 lbl = "lbl" + cont.ToString().Trim();//Nome das labels dentro do groupbox estao lbl1,lbl2...lbl80 string tipoQuarto = dtDados.Tables[0].Rows[0].Field<string>("QuartoTipo"); gb1.Text= tipoQuarto;

    //aqui que preciso pegar o groupbox que minha string "gb" recebeu como valor, ao invés de gb1 deveria estar gb1,gb2...gb80 //...conforme a repetição fosse mudando }







    terça-feira, 28 de julho de 2015 15:30

Respostas

  • Criei um outro tópico com a pergunta um pouco melhor elaborada e consegui a resposta que precisava. O código era este:

    string stringQualquer = "";
    for (int cont = 1; cont <= 80; cont++)			
    {
      (this.panel1.Controls["groupbox" + cont] as GroupBox).Text = stringQualquer;
      (this.panel1.Controls["groupbox" + cont] as GroupBox).Controls["lbl" + cont] as Label).Text = stringQualquer;
    }

    respondida neste tópico

    https://social.msdn.microsoft.com/Forums/pt-BR/8aa7b98a-9543-4d2a-afc5-aaacc22522f0/alterar-propriedade-de-vrios-componentes-em-tempo-de-execuo?forum=vscsharppt

    • Marcado como Resposta Eduardo Michetti quarta-feira, 29 de julho de 2015 10:30
    quarta-feira, 29 de julho de 2015 10:30

Todas as Respostas

  • Olá Eduardo,

     como você identifica seus GroupBox com o registro do banco de dados ? Por exemplo como sabe que o Group10 é o registro no banco ?

    terça-feira, 28 de julho de 2015 18:24
  • o groupbox é criado normal pelo designer do c#, na verdade eu falei errado na pergunta acima.

    Eu preciso alterar a propriedade TEXT dos groupbox.

    Os names são gb1,gb2...gb80, ai preciso mudar a propriedade Text deles.

    tava tentando algo assim:

                    

    gb = "gp" + cont.ToString().Trim();

    var dg = new System.Windows.Forms.GroupBox(); dg.Name = gb; dg.Text = tipoQuarto.TrimEnd();


    mas ainda não consegui



    terça-feira, 28 de julho de 2015 20:00
  • Eduardo!

       Acredito que não está funcionando porque você não está utilizando a variável criada no foreach. Tente isto:

    // Substitua esta linha
    string tipoQuarto = dtDados.Tables[0].Rows[0].Field<string>("QuartoTipo");
    
    // Por esta
    string tipoQuarto = dr.Field<string>("QuartoTipo");
    Bom trabalho!
    terça-feira, 28 de julho de 2015 20:21
  • Não é esta a duvida, o valor consigo acessar do banco.

    O que preciso é alterar a propriedade text dos meus groupbox, sem precisar alterar um por um, por exemplo:

    ao invés de fazer assim:

    groupbox1.Text = "teste";

    groupbox2.Text = "carrinho";

    groupbox3.Text = "c ta bao";

    ...

    ...

    ...

    groupbox80.Text = "e ae";

    //80 vezes

    Quero fazer isso dentro de uma estrutura de repetição, pra não precisar digitar este comando 80 vezes.

    Portanto, cada hora que percorrer minha repetição tenho que acessar um groupbox diferente

    Exemplo:

    // Na primeira execução da repetição alterar o groupbox1
    
    groupbox1.Text = stringQualquer;
    
    // Na segunda execução alterar o groupbox2
    
    groupbox2.Text = stringQualquer;
    
    //até executar o octogésimo groupbox


    terça-feira, 28 de julho de 2015 22:38
  • Criei um outro tópico com a pergunta um pouco melhor elaborada e consegui a resposta que precisava. O código era este:

    string stringQualquer = "";
    for (int cont = 1; cont <= 80; cont++)			
    {
      (this.panel1.Controls["groupbox" + cont] as GroupBox).Text = stringQualquer;
      (this.panel1.Controls["groupbox" + cont] as GroupBox).Controls["lbl" + cont] as Label).Text = stringQualquer;
    }

    respondida neste tópico

    https://social.msdn.microsoft.com/Forums/pt-BR/8aa7b98a-9543-4d2a-afc5-aaacc22522f0/alterar-propriedade-de-vrios-componentes-em-tempo-de-execuo?forum=vscsharppt

    • Marcado como Resposta Eduardo Michetti quarta-feira, 29 de julho de 2015 10:30
    quarta-feira, 29 de julho de 2015 10:30