0

我有一个ContextMenuStrip我在代码中创建的:

ContextMenuStrip menu;
public Loader()
{
    menu = new ContextMenuStrip();
    menu.Items.Add("Set Complete");
    menu.Items.Add("Set Review");
    menu.Items.Add("Set Missing");
}

我需要添加在单击某个项目时将运行的代码。到目前为止,我已经尝试过:

if (menu.Items[0].Selected)
{
    //code
}

if (menu.Items[1].Selected)
{
    //code
}

if (menu.Items[2].Selected)
{
   //code
}

但是(惊喜,惊喜)它不起作用。

ContextMenuStrip我想我可能需要为每个项目设置一个事件处理程序,但是在创建with 代码时不确定如何执行此操作。

4

2 回答 2

2

您应该将事件处理程序添加到各个菜单项(Click事件)或 ContextMenuStrip 本身(ItemClicked事件)。

看看这里:如何响应 ContextMenuStrip 项目点击

于 2011-12-15T12:12:22.010 回答
2

您必须订阅点击事件。我已经更改了您的示例,因此它应该可以工作:

public Loader()
{
    var menu = new ContextMenuStrip();
    var menuItem = menu.Items.Add("Set Complete");
    menuItem.Click += OnMenuItemSetCompleteClick;
    menuItem = menu.Items.Add("Set Review");
    menuItem.Click += OnMenuItemSetReviewClick;
    menuItem = menu.Items.Add("Set Missing");
    menuItem.Click += OnMenuItemSetMissingClick;
}

private void OnMenuItemSetCompleteClick(object sender, EventArgs e)
{
    // Do something
}

private void OnMenuItemSetReviewClick(object sender, EventArgs e)
{
    // Do something
}

private void OnMenuItemSetMissingClick(object sender, EventArgs e)
{
    // Do something
}
于 2011-12-15T12:15:21.553 回答