我有一个TreeView控件和一些TreeNodes。每个节点的上下文菜单基于其状态具有不同的菜单项。因此,我当前正在将每个TreeNode附加到其自己的上下文菜单。
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
对象?