PDA

View Full Version : سوال: بدست آوردن tag یک menu item در runtime



roya_hh
یک شنبه 04 اسفند 1387, 08:43 صبح
سلام.
چطوری میشه tag مربوط به یک menu item را که در زمان اجرا ایجاد شده است را در زمانی که بر روی آن کلیک میکنیم بدست آوریم؟
در add handler منو را نمی شناسد.
این کد ساخت منو:


'ساختن منوی اولیه
Dim main As New Form
main.RightToLeft = System.Windows.Forms.RightToLeft.Yes
main.WindowState = System.Windows.Forms.FormWindowState.Maximized
main.StartPosition = System.Windows.Forms.FormStartPosition.CenterScree n

'''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''
'ساختن منو
Dim MainMenu As New MenuStrip
con.Open()
cmd.Connection = con

cmd.CommandText = " SELECT dbo.Tbl_Form_group.id, dbo.Tbl_Form_group.name FROM dbo.Tbl_Form_group "
Dim rd1 As SqlClient.SqlDataReader
Try
rd1 = cmd.ExecuteReader
Dim i As Integer = 0
If rd1.HasRows Then
While rd1.Read
MainMenu.Items.Add(rd1.Item(1), Nothing)

Dim cms As New ContextMenuStrip()

Dim tsi As ToolStripMenuItem = CType(MainMenu.Items(i), ToolStripMenuItem)
Dim con1 As New SqlConnection
con1.ConnectionString = con.ConnectionString
Dim cmd1 As New SqlCommand
cmd1.Connection = con1
con1.Open()
cmd1.CommandText = " SELECT dbo.Tbl_Form_group.id, dbo.Tbl_Form_Header.Form_name_F, dbo.Tbl_Form_Header.Id_header" & _
" FROM dbo.Tbl_Form_group INNER JOIN dbo.Tbl_Form_Header" & _
" ON dbo.Tbl_Form_group.id = dbo.Tbl_Form_Header.Group_code where id=" + CStr(rd1.Item(0))
Dim rd2 As SqlClient.SqlDataReader
cmd1.Parameters.Clear()
rd2 = cmd1.ExecuteReader
Dim i1 As Integer = 0
If rd2.HasRows Then
While rd2.Read
cms.Items.Add(rd2.Item(1), Nothing)
cms.Items.Item(i1).Tag = rd2.Item(2)
i1 += 1
End While
End If
tsi.DropDown = cms

AddHandler cms.Click, AddressOf cmsclick

i = i + 1
End While
End If

con.Close()
Catch ex As SqlClient.SqlException
MsgBox(ex.Message)
Catch ex As Exception
con.Close()
End Try
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''

main.Controls.Add(MainMenu)

main.ShowDialog()

Me.Dispose()