Ciao a tutti,
Con le due seguenti funzioni creo dinamicamente delle label, ho cercato di aggiungere un evento handler dinamico ma non sono riuscito perche mi dice che AddressOf deve essere senza parentevi,
Ma come posso passargli il mio parametro allora?
codice:Private Sub ListProfile_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim Sql As String Dim dt As New DataTable Dim ds As New DataSet Dim myfont As New Font("Microsoft Sans Serif", 10, FontStyle.Bold) Dim CNT As Integer = 0 Dim X As Integer = 30 Dim Y As Integer = 440 If GeneralModel.language = "ITA" Then lbInfo.Text = "INFORMAZIONI E " + vbCrLf + "DATI ANAGRAFICI" lbRilevamenti.Text = "RILEVAMENTI " + vbCrLf + "SU VETTURA" lbNote.Text = "Note" ElseIf GeneralModel.language = "ENG" Then lbInfo.Text = "PERSONAL DATA " + vbCrLf + "AND INFORMATION" lbRilevamenti.Text = "PHOTOGRAPHS " + vbCrLf + "OF THE VEHICLE" lbNote.Text = "Annotation" End If lbName.Text = GeneralModel.NameModel + " - " + GeneralModel.NameDoc '-------------------------RILEVAMENTI SU VETTURA db.Connetti() CNT = 0 X = 30 Y = 440 Sql = "SELECT main_code,sub_code,desc_ita,desc_eng,testo,note_keypoint,check_keypoint " Sql = Sql & "FROM NewMac_Profili " Sql = Sql & "WHERE newmac_id = " & CInt(GeneralModel.IdDoc) & " AND sub_code = '00' AND LEFT(main_code,1) <> 'A' " Sql = Sql & "ORDER BY main_code ASC, sub_code ASC " Dim da As New OleDb.OleDbDataAdapter(Sql, db.istance) da.Fill(dt) Dim myDelegate As New System.EventHandler(AddressOf MainCat_Click(1)) Dim temp As Label() = New Label(dt.Rows.Count) {} For Each myRows In dt.Rows temp(CNT) = New Label With temp(CNT) ' Set the properties of the Label here ... .Location = New System.Drawing.Point(X, Y) .Size = New System.Drawing.Size(300, 20) .TextAlign = ContentAlignment.MiddleLeft .ForeColor = System.Drawing.Color.White .BackColor = System.Drawing.Color.Transparent .Font = myfont .Cursor = Cursors.Hand ' Now, tell the Label what function to use when clicked. AddHandler .Click, myDelegate End With 'b.Click+=new EventHandler(b_Click); If GeneralModel.language = "ITA" Then temp(CNT).Text = myRows.Item("desc_ita") ElseIf GeneralModel.language = "ENG" Then temp(CNT).Text = myRows.Item("desc_eng") End If Me.Controls.Add(temp(CNT)) CNT += 1 Y = Y + 20 Next db.Disconnetti() '-------------------------RILEVAMENTI SU VETTURA '-------------------------INFORMAZIONI E DATI ANAGRAFICI db.Connetti() ds.Clear() dt.Clear() Erase temp CNT = 0 X = 30 Y = 330 Sql = "SELECT main_code,sub_code,desc_ita,desc_eng,testo,note_keypoint,check_keypoint " Sql = Sql & "FROM NewMac_Profili " Sql = Sql & "WHERE newmac_id = " & CInt(GeneralModel.IdDoc) & " AND sub_code = '00' AND LEFT(main_code,1) = 'A' " Sql = Sql & "ORDER BY main_code ASC, sub_code ASC " da.SelectCommand = New OleDbCommand(Sql, db.istance) da.Fill(dt) temp = New Label(dt.Rows.Count) {} For Each myRows In dt.Rows temp(CNT) = New Label temp(CNT).Location = New System.Drawing.Point(X, Y) temp(CNT).Size = New System.Drawing.Size(300, 20) temp(CNT).TextAlign = ContentAlignment.MiddleLeft temp(CNT).ForeColor = System.Drawing.Color.White temp(CNT).BackColor = System.Drawing.Color.Transparent temp(CNT).Font = myfont If GeneralModel.language = "ITA" Then temp(CNT).Text = myRows.Item("desc_ita") ElseIf GeneralModel.language = "ENG" Then temp(CNT).Text = myRows.Item("desc_eng") End If Me.Controls.Add(temp(CNT)) CNT += 1 Y = Y + 20 Next db.Disconnetti() '-------------------------INFORMAZIONI E DATI ANAGRAFICI End Sub Private Sub MainCat_Click(ByVal param As Integer) MessageBox.Show("Click") End Sub

Rispondi quotando