1

動的なストリップメニューを作成しようとしています。基本的に、プログラムはメニューの構造を含む XML ファイルを読み取ります。これは成功しました。

しかし、例として「ファイル」メニューをクリックしても何も起こりません。はい、オブジェクトをクリックしたときに呼び出される関数を作成する必要があることを知っているので、その方法を説明するWebサイトの指示に従ってそれを行いました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

オブジェクト「sender」と「e」が NewFile_Click の呼び出しで渡されていないということでビルドされません。どうすればよいかわかりません。

4

1 に答える 1

2

VB.Net では、AddressOf を使用します。

fileitem.DropDownItems.Add("New", _
                           Image.FromFile("C:\\add.png"), _
                           AddressOf NewFile_click)
于 2014-08-25T19:02:49.460 に答える