用户控件上下文菜单?

时间:2012-01-01 05:14:44

标签: c# user-controls contextmenu

我编写了一个usercontrol,实质上是一个小部件的调色板。当用户右键单击我在控件上绘制的其中一个小部件时,我想允许用户删除所选小部件。

在我的usercontrol的MouseClick事件处理程序中,我确定用户点击了哪个窗口小部件。然后我检查鼠标按钮是否是正确的按钮。如果是这样,我会显示一个菜单,允许用户删除小部件:

if (e.Button == MouseButtons.Right)
{
    ContextMenu deleteMenu = new ContextMenu();
    MenuItem deleteItem = new MenuItem("Delete...", new System.EventHandler(this.onDeleteMenuItem_Click));
    deleteMenu.MenuItems.Add("Delete");
    deleteMenu.Show(this, new Point(mouseXPosition, mouseYPosition));
}

这个项目的处理程序是:

private void onDeleteMenuItem_Click(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine("Deleting...");
}

当我右键单击时,会显示菜单,但处理程序永远不会被调用。我做错了什么?

1 个答案:

答案 0 :(得分:6)

我怀疑是因为你没有添加菜单项:

更改此行代码:

deleteMenu.MenuItems.Add("Delete");

为:

deleteMenu.MenuItems.Add(deleteItem);