C# 当鼠标右键单击项目时,如何为listView1和treeView1上的每个项目添加上下文菜单?
listView1中的项目是文件,因此我希望当我在文件上右键单击时,每个文件的菜单将显示不同的选项(属性),然后如果我在树视图1上用鼠标右键单击项目,因为树视图1上的项目是目录 当鼠标光标位于某个项目上时,我如何在右键单击特定项目时进行此操作?它将显示一个包含该项目选项的菜单 列表视图!鼠标移动事件:C# 当鼠标右键单击项目时,如何为listView1和treeView1上的每个项目添加上下文菜单?,c#,.net,winforms,C#,.net,Winforms,listView1中的项目是文件,因此我希望当我在文件上右键单击时,每个文件的菜单将显示不同的选项(属性),然后如果我在树视图1上用鼠标右键单击项目,因为树视图1上的项目是目录 当鼠标光标位于某个项目上时,我如何在右键单击特定项目时进行此操作?它将显示一个包含该项目选项的菜单 列表视图!鼠标移动事件: private void listView1_MouseUp(object sender, MouseEventArgs e) { if (e.Button == Mous
private void listView1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if (listView1.FocusedItem.Bounds.Contains(e.Location) == true)
{
contextMenuStrip1.Show(Cursor.Position);
}
}
}
private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
// Select the clicked node
treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);
if (treeView1.SelectedNode != null)
{
myContextMenuStrip.Show(treeView1, e.Location);
}
}
}
TreeView W1 MouseUp事件:
private void listView1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if (listView1.FocusedItem.Bounds.Contains(e.Location) == true)
{
contextMenuStrip1.Show(Cursor.Position);
}
}
}
private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
// Select the clicked node
treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);
if (treeView1.SelectedNode != null)
{
myContextMenuStrip.Show(treeView1, e.Location);
}
}
}
还有一种方法我做了,但不确定是否需要使用:
private MenuItem AddMenuItem(ContextMenu cm, string text, EventHandler handler, object context)
{
MenuItem item = new MenuItem(text, handler);
item.Tag = context;
cm.MenuItems.Add(item);
return item;
}
您可以通过使用TreeNode.name属性为文件和目录节点指定特定名称来区分它们。在COntextMenuStrip.Opening事件中,您可以根据节点名称启用或禁用菜单项
TreeNode tn = treeView1.GetNodeAt( e.X, e.Y );
if( tn != null )
{
if( tn.Name == "FileName") {
}
}
处理在菜单打开前显示的事件。从那里,您可以确定当前选定的文件/文件夹,并在显示菜单之前相应地更改菜单。