1

我制作 Windows 窗体应用程序。我在 TreeView 上添加了几个节点并添加了 ContextMenuStrip。

  var menu = new ContextMenuStrip();
  menu.Items.Add("Some text", new Bitmap(1, 1), new EventHandler(function_name));

  var treeView = new TreeView(..);
  treeView.ContextMenuStrip = menu;      

  treeView.Nodes.Add(new TreeNode()
  {
         ...
         Tag = someObject
  });

我的问题是如何检查在function_name哪个 treeNode 上单击并从 ContextMenuStrip 中选择选项的函数

编辑

函数名签名

 public void pokaz_DoubleClick(object sender, EventArgs e)
 {
 }
4

3 回答 3

1

您可以在显示上下文菜单之前选择节点,然后您只需要检查SelectedNode属性。像这样的东西:

private void treeView_MouseDown(object sender, MouseEventArgs e)
{
    //See what node is at the location that was just clicked
    var clickedNode = treeView.GetNodeAt(e.Location);

    //Make that node the selected node
    treeView.SelectedNode = clickedNode;
}

private void function_name(object sender, EventArgs e)
{
    var currentNode = treeView.SelectedNode;

    //Do something with currentNode
}
于 2011-08-30T07:56:56.203 回答
1

该方法的签名是什么function_name

通常您可以检查 sender 参数的内容,但它可能是TreeView而不是TreeNode,如果是这样,您可以检查e参数的属性。

另一种方法是,在每次鼠标按下时,确保在 TreeView 中选择鼠标下的节点,以便在function_name执行时获取节点treeview.SelectedNode

于 2011-08-30T07:43:26.593 回答
1

您可以处理 TreeNodeMouseClick 事件。在您的 TreeNodeMouseClickEventHandler 中,您将可以访问一个TreeNodeMouseClickEventArgs参数。此参数包含许多属性,可用于检查在哪个节点上单击了哪个鼠标按钮。例如。

private TreeNode rightClickeNode;

void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        rightClickedNode = e.Node;
    }
}

然后,您可以从您的function_name.

于 2011-08-30T07:54:01.343 回答