Recupero TAG o IMAGE.NAME di PICTUREBOX create in fase di esecuzione

giovedì 30 settembre 2021 - 16.05
Tag Elenco Tags  VB.NET  |  Visual Studio 2010  |  Access (.mdb)

13600210 Profilo | Newbie

Buongiorno,
creo delle picturebox in fase di esecuzione come sotto.

If L_figli.Items.Count > 0 Then
For i = 0 To L_figli.Items.Count - 1
L_figli.SetSelected(i, True)
id = Mid(L_figli.SelectedItem, InStr(L_figli.SelectedItem, "-") + 2)
Dim la, al As Integer 'larghezza altezza
If L_figli.Items.Count < 5 Then
la = 69
al = 105
Else
la = 36 : al = 50
End If
Dim fotofigli As New PictureBox
Dim fotofiglic As New PictureBox
fotofigli.Width = la
fotofigli.Height = al
fotofigli.SizeMode = PictureBoxSizeMode.StretchImage
fotofigli.BorderStyle = BorderStyle.FixedSingle
fotofigli.Image = Image.FromFile(foto(id))
ToolTip1.SetToolTip(fotofigli, L_figli.SelectedItem)
fotofigli.Tag = id
P_figlis.Controls.Add(fotofigli)
AddHandler fotofigli.Click, AddressOf fotofigliclik
next
end if

Ho necessità di recuperare il nome dell'immagine della picturebox o anche il TAG, se lo imposto uguale all'ID, quando clicco col pulsante sinistro del mouse come sotto

Private Sub fotofigliclik(ByVal sender As Object, ByVal e As MouseEventArgs)

Select Case e.Button
Case Me.MouseButtons.Left
Dim pic As PictureBox = DirectCast(sender, PictureBox)
MsgBox(pic.Name)
' oppure il tag
MsgBox(pic.Tag)
End Select
End Sub

Purtroppo mi restituisce sempre un messaggio bianco (stringa nulla)

Dove sbaglio?

alextyx Profilo | Expert

Non mi è chiaro tutto quello che stai facendo. Mi pare tu abbia una collezione (L_figli) cui aggiungi le varie picturebox?
Comunque, ho riprodotto qualcosa di simile, pur semplificato, e pare funzionare:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

Dim Pic1 As New PictureBox
Dim Pic2 As New PictureBox
Pic1.Top = 100
Pic1.BackColor = Color.Red
Pic2.BackColor = Color.Green
AddHandler Pic1.Click, AddressOf GestisciClick
AddHandler Pic2.Click, AddressOf GestisciClick
Me.Controls.Add(Pic1)
Me.Controls.Add(Pic2)

End Sub


Private Sub GestisciClick(ByVal sender As Object, ByVal e As MouseEventArgs)

Dim Pippo As PictureBox = DirectCast(sender, PictureBox)
MessageBox.Show(Pippo.BackColor.ToString)

End Sub

13600210 Profilo | Newbie

grazie per la risposta
L_figli altro non è che una listbox contenente i riferimenti a id foto da visualizzare in picturebox aggiunte in runtime.
per poter effettuare altre operazioni a seguito di evento click, mi serviva individuare l'id della foto, con il tag riesco a recuperarlo, non mi riesce di rilevare image.name.
non ho ancora capito dove sbaglio comunque ho risolto.

alextyx Profilo | Expert

Ok, bene :)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2022
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5