编程上下文菜单

本文关键字:菜单 上下文 编程 | 更新日期: 2023-09-27 18:18:01

我有一个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

编程上下文菜单

您必须订阅点击事件。我已经改变了你的样本,所以它应该工作:

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
}

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

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