Usuário com melhor resposta
Duvida em estrutura de repetição

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 }
- Editado Eduardo Michetti terça-feira, 28 de julho de 2015 20:01
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
Todas as Respostas
-
-
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
- Editado Eduardo Michetti terça-feira, 28 de julho de 2015 20:06
-
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! -
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
- Editado Eduardo Michetti terça-feira, 28 de julho de 2015 22:39
-
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