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