listView1中的项目是文件,所以我希望每个文件的菜单,当我在文件上右键单击鼠标时会显示不同的选项(属性)然后如果我正在做正确的clikc与鼠标在treeView1项上,因为treeView1上的项目是目录。
当鼠标光标在某个项目上时,如何右键单击特定项目,它将显示一个菜单,其中包含此项目的选项?
listView! 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);
}
}
}
treeView1 MouseUp事件:
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;
}
答案 0 :(得分:1)
您可以通过使用TreeNode.Name属性为其指定特定名称来区分文件和目录节点。在COntextMenuStrip.Opening事件中,您可以根据节点名称启用或禁用菜单项。
TreeNode tn = treeView1.GetNodeAt( e.X, e.Y );
if( tn != null )
{
if( tn.Name == "FileName") {
}
}