【问题标题】:Remove node from TreeView with ContextMenuStrip (when selection is disabled)使用 ContextMenuStrip 从 TreeView 中删除节点(禁用选择时)
【发布时间】:2018-06-16 23:00:45
【问题描述】:

我有一个带节点的 TreeView。

选择被禁用:

Private Sub TreeList_BeforeSelect(sender As Object, e As TreeViewCancelEventArgs) Handles TreeList.BeforeSelect
        e.Cancel = True
    End Sub

我无法找到方法来找出哪个节点(因为会有多个)打开 ContextMenuStrip(所以我可以用它删除它)。

根据 cmets,现在它可以工作了:

Dim WhichItemIsIt As TreeNode
Private Sub TreeList_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles TreeList.NodeMouseClick
    WhichItemIsIt = e.Node
End Sub
Private Sub RemoveToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RemoveToolStripMenuItem.Click
    TreeList.Nodes.Remove(WhichItemIsIt)
End Sub

【问题讨论】:

  • 我们应该猜测您是如何打开菜单的,还是您想向我们解释一下?
  • 作为标准的右键单击。
  • 所以您已将菜单分配给TreeViewTreeNodesContextMenuStrip 属性?
  • TreeListNode.ContextMenuStrip = ContextMenuStrip1 是的。

标签: vb.net treeview contextmenustrip


【解决方案1】:

我认为这样可以解决问题:

Private lastClickedNode As TreeNode

Private Sub TreeView1_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
    lastClickedNode = e.Node
End Sub

在显示菜单之前右键单击一个节点会将其分配给该字段,然后您可以从菜单项的Click 事件处理程序或其他任何内容访问该节点。

【讨论】:

  • 嗯,在我提出这个问题之前我已经尝试过了,但它不起作用。 Dim WhichItemIsIt As TreeNode, Private Sub List_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) 处理 List.NodeMouseClick, Dim WhichItemIsIt As TreeNode = e.Node, End Sub
  • 问题是当代码进入(甚至开始进入)Private Sub RemoveToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RemoveToolStripMenuItem.Click, List.Nodes.Remove(WhichItemIsIt), End Sub。 WhichItemIsIt 已经是 Nothing。
  • 请注意,NodeMouseClick 事件确实将 WhichItemIsIt 设置为节点,至少是临时的。
  • 扩展代码在 cmets 中基本不可读。请使用相关代码和信息更新您的问题。也就是说,除非您将其设置为Nothing,否则该字段怎么可能是Nothing?如果您将其设置为Nothing,在哪里以及为什么?
  • 问题是你声明了一个局部变量并分配给它而不是分配给成员变量。您有两个具有相同名称的不同变量,并且您正在分配给一个变量并期望从另一个变量中得到一些东西。而不是Dim WhichItemIsIt As TreeNode = e.Node,它应该只是WhichItemIsIt = e.Node。您应该能够看到您的代码和我的代码之间的差异,而无需我指出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 2010-10-16
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多