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:
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.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 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:
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)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
Come posso fare??
Grazie mille a tutti!!

Rispondi quotando
