2014-03-28 59 views
1

我从数据库中提取值并将其添加到子菜单中。我想知道如何在子菜单项上添加事件处理程序,以便如果某些正文点击显示为消息框(例如) 下面是代码,但它不断给我主菜单项而不是子菜单。如何在MenuStrip的子菜单项上单击添加事件处理程序

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    'Sql Query for getting business locations 
    While reader.Read() 
     DatabaseToolStripMenuItem.DropDownItems.Add(reader(0)) 'adding business to menustrip main menu item (Databse) 
    End While 

    AddHandler MenuStrip1.Click, AddressOf ItemClicked 
End Sub 

Private Sub ItemClicked(ByVal sender As Object, ByVal e As EventArgs) 
    MessageBox.Show("Test") 
End Sub 

问候

回答

1

如果您添加事件处理程序MenuStrip1 ,它会为MenuStrip1点击

AddHandler MenuStrip1.Click, AddressOf ItemClicked 

工作,你需要添加事件处理程序子菜单

AddHandler SubMenu1ToolStripMenuItem.Click, AddressOf ItemClicked 
AddHandler SubMenu2ToolStripMenuItem.Click, AddressOf ItemClicked 

更新:

While reader.Read() 
    Dim SubMenu As New ToolStripMenuItem 
    SubMenu.Text = reader(0) 
    AddHandler SubMenu.Click, AddressOf ItemClicked 

    DatabaseToolStripMenuItem.DropDownItems.Add(SubMenu) 
End While 
+0

是我添加子项动态的意思,我没有确切的数量atm。那么如何? – Bender

+0

所以,显示你的代码添加子菜单...编辑你的问题 –

+0

添加了新的代码,请检查 – Bender

0

用于菜单项添加到其父的添加方法重载,你应该使用一个允许你指定在同一时间的Click事件处理程序:

parentMenu.Items.Add(textToDisplay, imageToDisplay, AddressOf MethodToHandleClick) 

parentMenuItem.DropDownItems.Add(textToDisplay, imageToDisplay, AddressOf MethodToHandleClick) 
相关问题