gpt4 book ai didi

c# - 如何获取从中调用上下文菜单的 TreeNode?

转载 作者:行者123 更新时间:2023-11-30 16:26:46 27 4
gpt4 key购买 nike

我有一个带有一堆 TreeNode 的 TreeView 控件。每个节点 ContextMenu 根据其状态具有不同的 MenuItems。所以我目前正在为每个 TreeNode 附加其自己的 ContextMenu。

TreeView tv = new TreeView();
TreeNode tn = New TreeNode();
tn.ContextMenu = GetContextMenu(state);
tv.Nodes.Add(tn);

然后在 MenuItem 的点击事件中,我尝试获取 ContextMenu 所属的 TreeNode。

MenuItem mi = (MenuItem)sender;
ContextMenu tm = mi.GetContextMenu();
var sc = tm.SourceControl;

问题是 tm.SourceControl == null。我注意到 TreeNode 不是从 Control 派生的。这就是 SourceControl 属性为空的原因吗?如何获得合适的 TreeNode 对象?甚至是 TreeView 对象?

最佳答案

我不确定是否理解您的问题。

当您点击 TreeView 时,您可以执行此操作以获取选定的节点并:

void tvMouseUp(object sender, MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
// Select the clicked node
tv.SelectedNode = tv.GetNodeAt(e.X, e.Y);

if(tv.SelectedNode != null)
{
myContextMenuStrip.Show(tv, e.Location)
}
}
}

关于c# - 如何获取从中调用上下文菜单的 TreeNode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8535424/

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