HANDLES

JABA 17/09/2009 16:29:24
#323119
Olá pessoal, gostaria de poder criar uma ARRAY de handles para manipular o evento click de cada objeto( no meu caso, um PictureBox) , exemplo:

dim WithEvents obj as pictureBox

[ô]No Load do form eu crio 5 PicturesBox:
====================================================================================

dim i as integer
for i = 0 to 4
obj = new PictureBox
next

====================================================================================

[ô]Quando eu clicar nas picturesBox que foram criadas dinamicamente, deverei saber qual delas foi clicada.
private sub PictureBox1(sender as object, e as EventArgs) handles obj.Click [ô]aqui suponho que deve entrar o array de handles, mas estou fazendo referencia apenas a um obj.
Msgbox [Ô]A imagem com indice tal foi clicada[Ô]
end sub

alguem sabe como que se faz isso para multiplos controles e poderia por favor me ajudar?

muito obrigado.
MORDOR 17/09/2009 18:34:08
#323141
Resposta escolhida
Não é necessário criar um array de handlers para o evento. Basta adicionar um handler comum a todos os controles e acessar a referência ao controle passada pelo argumento [Ô]sender as object[Ô].

Dim pictureBox as PictureBox

For i as Integer = 1 to 4
pictureBox = new PictureBox
pictureBox.Name = [Ô]pictureBox[Ô] & i.ToString()
AddHandler pictureBox.Click, AddressOf pictureBox_Click
Me.Controls.Add(pictureBox)
Next


Private Sub pictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim pictureBox As PictureBox = CType(sender, PictureBox)
MessageBox.Show(pictureBox.Name)
End Sub


Qualquer controle clicado apontará para esse mesmo handler.
JABA 21/09/2009 16:24:25
#323348
Muito obrigado Mordor, funcionou perfeitamente. vlw
Tópico encerrado , respostas não são mais permitidas