OBTER NOME DO OBJETO CRIADO EM TEMPO DE EXECUCAO

STEVE 21/09/2010 17:25:39
#353527
Caros, boa tarde...

Estou com o seguinte problema, em um formulário eu crio vários picturebox em tempo de execução através do seguinte código:
  
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim teste As Integer
teste = 0
Do While teste < 22
Dim PB As New PictureBox
With PB
.Name = [Ô]MyPic[Ô] & teste
.Image = Image.FromFile([Ô]Prefixo[Ô] & teste)
.Location = New System.Drawing.Point(45 + ((teste - 1) * 35), 10)
.Size = New Size(30, 30)
.SizeMode = AutoSizeMode
.
End With

Me.Controls.Add(PB)
teste = teste + 1
Loop
End Sub


Agora eu preciso que ao clicar sobre uma dessas imagens, um textbox receba o nome desse objeto (MyPic & teste(Int)) para que eu possa disparar os eventos referentes a ele.

Tem como eu fazer isso? Como?

Grato desde já!

(PS.: Uma outra coisa me passou pela cabeça...rss.. é possível criar funções em tempo de execução?)
STEVE 21/09/2010 19:03:23
#353533
Alguém tem um exemplo de como obter o nome do objeto ao clicar sobre ele? Mesmo que não sejam criados em tempo de execução? Eu só achei funções baseadas em loop e chamadas por um botão especifico... eu preciso que essa mesma função seja chama sobre o clique de qq objeto...

Eu lembro que eu já vi alguma coisa assim em vb 6... mas como eu chamo o Hwnd no Vb.net 2010?

Obrigado desde já a quem puder me dar uma luz!!!
ADHEL 21/09/2010 19:27:05
#353540
Não é la grande coisa mas vai.

Se for poucos objetos criados em tempo de desenvolvimento, você pode fazer assim


Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Text = Button1.Name
End Sub

Private Sub ComboBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.Click
TextBox1.Text = ComboBox1.Name
End Sub

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
TextBox1.Text = Label1.Name
End Sub
End Class
RICART 22/09/2010 00:04:14
#353563
Resposta escolhida
Crie uma sub para adicionar o evento MouseMove e depois adicione para o seu controle:

Private Sub Picture_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Label1.Text = sender.name
End Sub

Acrescente esta linha no Form2_Load: AddHandler .MouseMove, AddressOf Picture_MouseMove

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim teste As Integer
teste = 0
Do While teste < 22
Dim PB As New PictureBox
With PB
.Name = [Ô]MyPic[Ô] & teste
.Image = Image.FromFile([Ô]Prefixo[Ô] & teste)
.Location = New System.Drawing.Point(45 + ((teste - 1) * 35), 10)
.Size = New Size(30, 30)
.SizeMode = AutoSizeMode

AddHandler .MouseMove, AddressOf Picture_MouseMove

End With

Me.Controls.Add(PB)
teste = teste + 1
Loop
End Sub
STEVE 25/09/2010 11:13:40
#353822
Boa dia....

ADHEL, eu até pensei nisso mas o problema que este número não será fixo, cada vez que o usuário inserir uma nova imagem na pasta de destino, eu quero que ela seja apresentada no formulário! Obrigado mesmo assim!

RICART, quando eu crescer eu quero ser igual você...rss funcionou perfeitamente para o que eu precisava... Obrigado mesmo....!!!

Tópico encerrado , respostas não são mais permitidas