Я пытаюсь создать динамический stripmenu, в основном программа читает XML файл, содержащий структуру для меню, это я сделал успешно.
Но когда я нажимаю на меню "Файл" в качестве примера, ничего не происходит, да, я знаю, что мне нужно создать функцию, которая будет вызываться, когда я нажимаю объект, поэтому я сделал это в соответствии с инструкциями веб-сайта, в котором объясняется, как это сделать в С#, однако в VB.NET не работает, но в С# он делает.
Вот пример, который я видел в С#:
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, я не знаю, что делать.
В VB.Net используйте AddressOf:
fileitem.DropDownItems.Add("New", _
Image.FromFile("C:\\add.png"), _
AddressOf NewFile_click)