我制作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中选择了选项
function_name sygnature
public void pokaz_DoubleClick(object sender, EventArgs e)
{
}
答案 0 :(得分:1)
function_name
方法的签名是什么?
通常您可以检查sender参数的内容,但可能会发生TreeView
而不是TreeNode
,如果是这样,您可以检查e
参数的属性。
另一种方法是,在每次按下鼠标时,确保在TreeView中选择鼠标下的节点,这样当function_name
执行时,您的节点将被treeview.SelectedNode
答案 1 :(得分:1)
您可以处理TreeNodeMouseClick事件。在TreeNodeMouseClickEventHandler中,您将可以访问TreeNodeMouseClickEventArgs
参数。此参数包含许多属性,可用于检查在哪个节点上单击了哪个鼠标按钮。例如。
private TreeNode rightClickeNode;
void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
rightClickedNode = e.Node;
}
}
然后,您可以从function_name
。
答案 2 :(得分: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
}