CONTROLES EM TEMPO DE EXECU?ÃO
Boa tarde, amigos.
Gostaria de saber onde estou errando ao criar controles em tempo de execução. O que estou [Ô]tentando[Ô] fazer é assim:
Tenho 3 Painéis e dentro deles vou inserir algumas PictureBoxes. Estou fazendo assim:
Aqui, ele cria as PictureBoxes dentro do primeiro painel.
Faço a mesma operação para criar os PictureBoxes dentro do segundo painel (pnlJogador2), só que simplesmente não cria, o segundo painel fica vazio.
Alguém consegue me dar uma luz?
Gostaria de saber onde estou errando ao criar controles em tempo de execução. O que estou [Ô]tentando[Ô] fazer é assim:
Tenho 3 Painéis e dentro deles vou inserir algumas PictureBoxes. Estou fazendo assim:
int posicaoinicial_X = 10; int posicaoinicial_Y = 10;
int posicao = 35;
foreach (var item in jogador1)
{
PictureBox pic = new PictureBox();
pic.Image = Image.FromFile(item.Imagem);
pic.Location = new Point(posicaoinicial_X, posicaoinicial_Y);
pic.Size = new Size(30, 60);
pnlJogador1.Controls.Add(pic);
posicaoinicial_X += posicao;
}
Aqui, ele cria as PictureBoxes dentro do primeiro painel.
Faço a mesma operação para criar os PictureBoxes dentro do segundo painel (pnlJogador2), só que simplesmente não cria, o segundo painel fica vazio.
Alguém consegue me dar uma luz?
Ah, pessoal, me desculpem, mas eu cometi um erro infantil. Antes de criar as Pictures dentro dos painéis eu estava criando no Form, então eu usava outras coordenadas. Esqueci de alterar essas coordenadas para mostrar nos painéis, por isso que parecia que não estava criando. Estava, mas em outras coordenadas.
Agora já corrigi o erro e está tudo conforme eu planejei. Obrigado a todos os que pelo menos leram o post.
Até mais.
Agora já corrigi o erro e está tudo conforme eu planejei. Obrigado a todos os que pelo menos leram o post.
Até mais.
Bom, pessoal, aproveitando o mesmo tópico aberto, estou com a seguinte dúvida:
Se eu criar, por exemplo, 3 PictureBox dentro do Panel em tempo de execução, como estou fazendo acima;
como fazer para associar um método quando clicar numa PictureBox? Terei que definir um nome para cada uma delas na criação?
Será que existe outra maneira, ou não é possÃvel fazer isso?
Se eu criar, por exemplo, 3 PictureBox dentro do Panel em tempo de execução, como estou fazendo acima;
como fazer para associar um método quando clicar numa PictureBox? Terei que definir um nome para cada uma delas na criação?
Será que existe outra maneira, ou não é possÃvel fazer isso?
Você precisa criar um handle para cada imagem.
int posicaoinicial_X = 10; int posicaoinicial_Y = 10;
int posicao = 35;
foreach (var item in jogador1)
{
PictureBox pic = new PictureBox();
pic.Image = Image.FromFile(item.Imagem);
pic.Location = new Point(posicaoinicial_X, posicaoinicial_Y);
pic.Size = new Size(30, 60);
pnlJogador1.Controls.Add(pic);
posicaoinicial_X += posicao;
[txt-color=#e80000]pic.Click += new System.EventHandler(this.pic_Click);[/txt-color]
}
private void pic_Click(object sender, EventArgs e)
{
MessageBox.Show(sender.Name);
}
Bom dia, Jaba.
Pois eu criei o handle da forma como você mostrou, porém, no evento Click, se eu quiser mostrar o nome do controle,
MessageBox.Show(sender.Name); aparece o erro:
[txt-color=#e80000]object does not contain a definition for [ô]Name[ô] and no extension method [ô]Name[ô] accepting a first argument of type [ô]object[ô] could be found[/txt-color]
Eu preciso de uma maneira onde eu clico na terceira imagem, por exemplo, e o programa saiba que eu estou clicando nela e não em outra.
Pois eu criei o handle da forma como você mostrou, porém, no evento Click, se eu quiser mostrar o nome do controle,
MessageBox.Show(sender.Name); aparece o erro:
[txt-color=#e80000]object does not contain a definition for [ô]Name[ô] and no extension method [ô]Name[ô] accepting a first argument of type [ô]object[ô] could be found[/txt-color]
Eu preciso de uma maneira onde eu clico na terceira imagem, por exemplo, e o programa saiba que eu estou clicando nela e não em outra.
é só fazer uma conversão. Não se esqueça de dar um nome para a imagem, senão vai aparecer uma mensagem vazia.
MessageBox.Show(((PictureBox) sender).Name);
Show de bola, Jaba, é isso aÃ, muito obrigado mesmo.
Até mais.
Até mais.
Porque você não utiliza a propriedade TAG existente no PictureBox? Tal propriedade, pode inclusive, armazenar um objeto. E com isso você poderia manipular muito mais facilmente a sua rotina.
Para atribuir:
Para obter o conteúdo
Para atribuir:
pic.Tag = SeuObjeto;
Para obter o conteúdo
var obj = (SeuObjeto)pic.Tag;
Obrigado, FFCOUTO, mas fiz como o JABA sugeriu e atendeu à minha necessidade.
Havia me esquecido de encerrar.
Até mais.
Havia me esquecido de encerrar.
Até mais.
Tópico encerrado , respostas não são mais permitidas