C# C右键单击树视图节点
我有一个父节点为Node0的树视图。我添加了3个子节点: 我有一个与每个子节点关联的弹出菜单 我的问题是:如果直接右键单击其中一个子节点,则不会显示弹出窗口。因此,我必须先选择子节点,然后右键单击以显示弹出窗口 如何更改代码,以便直接右键单击特定子节点打开弹出菜单? 弹出菜单列表中只有OpenMe菜单。单击此菜单时,将打开一个窗口,此窗口应与我单击的子菜单相关联。如何获取右击子菜单的事件并使用它显示表单? 编辑: 看看这个 行字符串s=treeView1.SelectedNode.Text;获取选定节点的名称,而不是已右键单击的节点的名称。 所以这里我必须用C# C右键单击树视图节点,c#,winforms,treeview,C#,Winforms,Treeview,我有一个父节点为Node0的树视图。我添加了3个子节点: 我有一个与每个子节点关联的弹出菜单 我的问题是:如果直接右键单击其中一个子节点,则不会显示弹出窗口。因此,我必须先选择子节点,然后右键单击以显示弹出窗口 如何更改代码,以便直接右键单击特定子节点打开弹出菜单? 弹出菜单列表中只有OpenMe菜单。单击此菜单时,将打开一个窗口,此窗口应与我单击的子菜单相关联。如何获取右击子菜单的事件并使用它显示表单? 编辑: 看看这个 行字符串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:最终得到了解决方案
然后
private void treeview1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
s = e.Node.Name;
menuStrip1.Show();
}
}
它起作用了,
谢谢当您右键单击时,这将在特定的鼠标点为您提供treenode
if(e.Button == MouseButtons.Right)
{
TreeNode destinationNode = ((TreeView)sender).GetNodeAt(new Point(e.X, e.Y));
//Do stuff
}
您应该可以从这里打开一个特定的弹出菜单。您可以尝试使用它使用的事件来获取按钮和单击的节点
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);
}
}
}
右键单击的代码在哪里?哪种技术?WinForms?网络表单?ASP.NETMVC?WPF?否我想要的是显示与所选节点相关的弹出菜单框。首先右键单击一个节点并选择ShowMe以显示一个表单,其标题设置为右键单击的节点名称。@DeathCoder这是Winforms还是Wpf?谢谢Mark Hall,您的代码给了我启发。我使用solutionNo编辑此主题,我想要的是显示与所选节点相关的弹出菜单框。首先右键单击节点并选择ShowMe以显示标题设置为右键单击的节点名称的表单。
if(e.Button == MouseButtons.Right)
{
TreeNode destinationNode = ((TreeView)sender).GetNodeAt(new Point(e.X, e.Y));
//Do stuff
}
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);
}
}
}