为什么 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
的查看模式设置为 详细信息,然后将 ListView
的 ContextMenuStrip
属性 ] 到 contextMenuStrip1.
ContextMenuStrip:
The shortcut menu to display when the user right clicks the control.
因此,对于 Cut 菜单,调用 Click
事件 CutToolStripMenuItem
。同样,也调用 Copy
和 Paste
的事件并添加您的代码。
private void CutToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count != 0)
{
foreach (ListViewItem LItem in listView1.SelectedItems)
{
//Your code
}
}
}
在 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
的查看模式设置为 详细信息,然后将 ListView
的 ContextMenuStrip
属性 ] 到 contextMenuStrip1.
ContextMenuStrip:
The shortcut menu to display when the user right clicks the control.
因此,对于 Cut 菜单,调用 Click
事件 CutToolStripMenuItem
。同样,也调用 Copy
和 Paste
的事件并添加您的代码。
private void CutToolStripMenuItem_Click(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count != 0)
{
foreach (ListViewItem LItem in listView1.SelectedItems)
{
//Your code
}
}
}