【发布时间】:2013-06-23 20:41:45
【问题描述】:
我有不同级别 TreeNode 的 TreeView
我向所有父 TreeNodes 添加了相同的 ContextMenuStrip,我希望通过打开该 ContextMenuStrip 并按“全部删除”来删除所有子 TreeNodes
private void btn_delete_all_objects_Click(object sender, EventArgs e)
{
ToolStripMenuItem tsmi = (ToolStripMenuItem)sender; //that way i receive button "Delete all"
ContextMenuStrip cms = (ContextMenuStrip)tsmi.Owner; //this is ContextMenuStrip where this button...
TreeView tw = (TreeView)cms.SourceControl; //i can get TreeView :( BUT I NEED TreeNode!
TreeNode tn = tw.SelectedNode; //bah... if i select some of child nodes, then right click to open menu on parent, selected node is still that child
}
而且我不知道如何获取用户单击打开菜单的 TreeNode
有什么想法吗?
【问题讨论】:
-
当上下文菜单显示时,您将获得节点。只需将此节点保存在变量中并在事件处理程序中读取它。
-
哪种方式?在 contextMenuStrip1_Opening 和 contextMenuStrip1_Opened sender 仍然是 ContextMenuStrip,但不是 TreeNode
-
此时您在树节点上单击鼠标,您就有了树节点。这个你可以保存在一个变量中。单击上下文菜单中的条目后,您可以读取保存的变量,其中包含您的节点。
标签: c# treeview treenode contextmenustrip