我正在尝试创建一个动态stripmenu,基本上程序会读取包含菜单结构的XML文件,这是我成功完成的。
但是,当我点击菜单“文件”作为示例没有任何反应,是的我知道我必须创建一个功能,当我点击对象时将调用,所以我按照网站的说明进行了解释如何在C#中做到这一点,但在VB.NET中不起作用,但在C#中确实如此。
以下是我在C#中看到的例子:
private void CreateMenuWithEventAndKey()
{
MenuStrip strip = new MenuStrip();
ToolStripMenuItem fileItem = new ToolStripMenuItem("&File");
// Create our first item with an image and wired to a click event
// Also sets Alt + 7 as the shortcut
ToolStripMenuItem itemWithEventAndKey = new ToolStripMenuItem(
"Delete Event", Image.FromFile("c:\\Delete.png"), deleteItem_Click,
(Keys)Shortcut.Alt7);
fileItem.DropDownItems.Add(itemWithEventAndKey);
strip.Items.Add(fileItem);
this.Controls.Add(strip);
}
// Event that is called from menu item.
private void deleteItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Delete Event");
}
这是我在VB.NET中所做的。
Private Sub BtnLogin_Click(sender As Object, e As EventArgs) Handles BtnLogin.Click
Dim menu As New MenuStrip()
Panel1.Visible = False
Dim fileitem = New ToolStripMenuItem("&file")
fileitem.DropDownItems.Add("New", Image.FromFile("C:\\add.png"), NewFile_click)
menu.Items.Add(fileitem)
Me.Controls.Add(menu)
End Sub
Private Sub NewFile_click(sender As Object, e As EventArgs)
MessageBox.Show("New")
End Sub
它没有构建,因为它表示在NewFile_Click的调用中没有传递对象“sender”和“e”,我不知道该怎么做。
答案 0 :(得分:2)
在VB.Net中,使用AddressOf:
fileitem.DropDownItems.Add("New", _
Image.FromFile("C:\\add.png"), _
AddressOf NewFile_click)