Ciao a tutti
Nella mia nuova applicazione ho bisogno di creare una serie di GroupBox (il cui numero è specificato da una variabile che recupero dal mio sito). Per fare ciò utilizzo un ciclo Do Until. Fin qui tutto bene.. Ho però bisogno di gestire gli eventi di queste GroupBox separatamente (MouseEnter, MouseLeave, Click) in modo che, ad esempio cliccando su una succede qualcosa di diverso da quello che succede su un'altra.
Il mio codice è questo:
codice:
Dim STR()
STR = Split(wb.Document.Body.InnerText, "////")
Dim n As Integer = STR(0)
Dim nc As Integer = 0
Dim y As Integer = 17
Dim x As Integer
Dim nrc As Integer = 0
Dim TESTI()
Do Until nrc = n
If x > 829 Then
y += 6 + 177
nc = 0
End If
Dim gb1 As New GroupBox
AddHandler gb1.MouseEnter, AddressOf APPGB_Mouse_Enter gb1.Text = ""
gb1.Size = New System.Drawing.Size(200, 177)
gb1.Location = New System.Drawing.Point(6 + nc * 200 + nc * 6, y)
StoreGB.Controls.Add(gb1)
TESTI = Split(STR(nrc + 1), ";;;")
Dim lab As New TextBox
lab.Size = New System.Drawing.Size(196, 27)
lab.Location = New System.Drawing.Point(2, 148)
lab.BorderStyle = BorderStyle.None
lab.TextAlign = HorizontalAlignment.Center
lab.Cursor = Cursors.Default
lab.BackColor = Color.White
lab.ReadOnly = True
lab.Text = TESTI(0)
gb1.Controls.Add(lab)
Dim img As New PictureBox
AddHandler img.Click, AddressOf Appimg_click
img.Size = New System.Drawing.Size(188, 124)
img.Location = New System.Drawing.Point(6, 16)
img.InitialImage = Nothing
gb1.Controls.Add(img)
img.ImageLocation = TESTI(3)
img.SizeMode = PictureBoxSizeMode.Zoom
lab.Name = "App" & nc + 1 & "Lab"
img.Name = "App" & nc + 1 & "Img"
gb1.Name = "App" & nc + 1
nrc += 1
nc += 1
x = 6 + (nc + 1) * 200 + nc * 6
Loop
La parte in verde è quella adibita alla creazione della GroupBox, le altre creano ognuna componenti all'interno di esso e la struttura è più o meno la stessa.
La riga evidenziata in rosso è quella che mi permette di gestire gli eventi di ciò che creo. Il problema è che essendo creati in un ciclo gli oggetti riferiscono allo stesso codice per lo stesso evento quindi per ognuno viene eseguita la stessa azione.
Come posso fare per differenziare tutto??
Un altro problema arriva quando imposto nell'evento click qualcosa che si riferisce alla GroupBox:
codice:
Public WithEvents APPIMG As PictureBox
Public WithEvents APPGB As GroupBox
Public Sub APPGB_Mouse_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles APPGB.MouseEnter
MsgBox(APPGB.Text)
End Sub
Public Sub Appimg_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles APPIMG.Click
MsgBox("Ciao")
End Sub
Nella parte verde ho un messaggio che dice "Ciao"; nella parte rossa ho un errore di compilazione che dice: "Object reference not set to an instance of an object."(Uso VS in inglese)
Come posso fare??
Grazie mille a tutti!!