【问题标题】:How to respond to a ContextMenuStrip item click如何响应 ContextMenuStrip 项目单击
【发布时间】:2011-08-12 22:33:45
【问题描述】:

目前我有以下代码:

ContextMenuStrip contexMenuuu = new ContextMenuStrip();

contexMenuuu.Items.Add("Edit ");
contexMenuuu.Items.Add("Delete " );
contexMenuuu.Show();

如何添加一个项目被点击时要处理的事件?

【问题讨论】:

标签: c# windows events contextmenu


【解决方案1】:

这可以使用以下代码完成:

ContextMenuStrip contexMenu = new ContextMenuStrip();

contexMenu.Items.Add("Edit ");
contexMenu.Items.Add("Delete ");
contexMenu.Show();
contexMenu.ItemClicked += new ToolStripItemClickedEventHandler(
    contexMenu_ItemClicked);

// ...

void contexMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) {
    ToolStripItem item = e.ClickedItem;
    // your code here
}

或者:

// ...

ToolStripItem item = contexMenu.Items.Add("Edit ");
item.Click += new EventHandler(item_Click);

// ...

void item_Click(object sender, EventArgs e) {
    ToolStripItem clickedItem = sender as ToolStripItem;
    // your code here
}

【讨论】:

  • 似乎虽然ItemClicked 允许您通过sender 检索点击的项目,但遗憾的是item.Click 事件处理程序不支持这样的事情......而ItemClicked 仅适用于一级菜单项,不适用于子菜单。
【解决方案2】:

Add 方法返回ToolStripItem。所以你可以为 Click 事件添加句柄

        var item = contexMenuuu.Items.Add("Edit ");
        item.Click += methodToBeInvoked;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多