gpt4 book ai didi

C# 右键单击​​ TreeView 节点

转载 作者:太空狗 更新时间:2023-10-29 20:46:45 25 4
gpt4 key购买 nike

我有一个 TreeView,其父节点为:Node0。我添加了 3 个 子节点:

Node01
Node02
Node03

我有一个与每个子节点关联的弹出菜单

我的问题:如果我直接右键单击其中一个子节点,我的弹出窗口不会显示。所以我必须先选择子节点,然后右键单击以显示弹出窗口。

  1. 如何更改代码,以便在特定子节点上直接右键单击可打开 PopupMenu?
  2. popupMenu 在列表中只有 OpenMe 菜单。单击此菜单时,应该会打开一个窗口,并且此窗口应该与我单击的子菜单相关联。如何获取右键子菜单的Event并用它显示Form?

编辑:

看看这个

private void modifySettingsToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
String s = treeView1.SelectedNode.Text;
new chartModify(s).ShowDialog();
}
catch (Exception er)
{
System.Console.WriteLine(">>>" + er.Message);
}
}

String s = treeView1.SelectedNode.Text; 行获取所选节点的名称,而不是右键单击的节点的名称。

所以在这里我必须用

修改这段代码
private void treeview1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
MessageBox.Show(e.Node.Name);
}

我这样修改:

try
{
TreeNodeMouseClickEventArgs ee;
new chartModify(ee.Node.Name).ShowDialog();
}

但它不起作用:错误:使用未分配的局部变量“ee”

编辑 #2:最终得到解决方案

public string s;
private void modifySettingsToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
new chartModify(s).ShowDialog();
}
catch (Exception er)
{
System.Console.WriteLine(">>>" + er.Message);
}
}

然后

private void treeview1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
s = e.Node.Name;
menuStrip1.Show();
}
}

它有效,
谢谢

最佳答案

您可以尝试使用 NodeMouseClick它使用 TreeNodeClickEventArgs 的事件获取按钮和被点击的节点。

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if(e.Button == MouseButtons.Right)
MessageBox.Show(e.Node.Name);
}

修改代码以显示弹出窗口并创建表单

public partial class Form1 : Form
{
string clickedNode;
MenuItem myMenuItem = new MenuItem("Show Me");
ContextMenu mnu = new ContextMenu();
public Form1()
{
InitializeComponent();
mnu.MenuItems.Add(myMenuItem);
myMenuItem.Click += new EventHandler(myMenuItem_Click);
}

void myMenuItem_Click(object sender, EventArgs e)
{
Form frm = new Form();
frm.Text = clickedNode;
frm.ShowDialog(this);
clickedNode = "";
}

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
clickedNode = e.Node.Name;
mnu.Show(treeView1,e.Location);
}
}
}

关于C# 右键单击​​ TreeView 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14208944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com