VB.NET Создание динамического StripMenu

1

Я пытаюсь создать динамический 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, я не знаю, что делать.

Теги:

1 ответ

2
Лучший ответ

В VB.Net используйте AddressOf:

fileitem.DropDownItems.Add("New", _
                           Image.FromFile("C:\\add.png"), _
                           AddressOf NewFile_click)
  • 0
    Спасибо, еще один вопрос, знаете ли вы, как я могу вызвать функцию в этом случае? Позвольте мне объяснить, названия меню будут в файле XML также именем функции, поэтому в файле XML у меня есть имя меню и имя функций, которые будут выполняться при нажатии. Не могли бы вы помочь мне снова?
  • 0
    @FernandoZuidarxis Звучит так, будто вам нужно снова нажать кнопку «Задать вопрос», но не совсем понятно, что вы подразумеваете под «названием функций». Убедитесь, что вы задокументировали вопрос с примерами.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню