为什么 ContextMenu 鼠标右键单击 ListView 项目不起作用?

Why the ContextMenu right mouse click on ListView items is not working?

在 form1 的顶部:

private ContextMenuStrip contextmenustrip1 = new ContextMenuStrip();

然后:

private void listView1_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Right)
    {
        ListView listView = sender as ListView;
        if (e.Button == System.Windows.Forms.MouseButtons.Right)
        {
            ListViewItem item = listView.GetItemAt(e.X, e.Y);
            if (item != null)
            {
                item.Selected = true;
                contextmenustrip1.Show(listView, e.Location);
            }
        }
        ContextMenu contextMenu = new System.Windows.Forms.ContextMenu();
        MenuItem menuItem = new MenuItem("Cut");
        menuItem.Click += new EventHandler(CutAction);
        contextMenu.MenuItems.Add(menuItem);
        menuItem = new MenuItem("Copy");
        menuItem.Click += new EventHandler(CopyAction);
        contextMenu.MenuItems.Add(menuItem);
        menuItem = new MenuItem("Paste");
        menuItem.Click += new EventHandler(PasteAction);
        contextMenu.MenuItems.Add(menuItem);
    }
}

当我使用断点单击项目时,它进入了事件,但鼠标右键单击不起作用,但可以肯定的是它没有显示剪切复制粘贴菜单。

我想做的是,当我右键单击 listView 中的项目时,它将显示当前项目的菜单。不确定我是否应该首先让 mousedown 或其他一些事件不确定什么更符合逻辑。但是我的想法是在每次鼠标右键单击项目时显示菜单。

您不需要执行上述任何操作。很简单,调用菜单项的Click事件。

首先,将 ListView 的查看模式设置为 详细信息,然后将 ListViewContextMenuStrip 属性 ] 到 contextMenuStrip1.

ContextMenuStrip:

The shortcut menu to display when the user right clicks the control.

因此,对于 Cut 菜单,调用 Click 事件 CutToolStripMenuItem。同样,也调用 CopyPaste 的事件并添加您的代码。

private void CutToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (listView1.SelectedItems.Count != 0)
    {
        foreach (ListViewItem LItem in listView1.SelectedItems)
        {
            //Your code                  
        }
    }
}