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!!