【问题标题】:Treeview .Click and .MouseClick event not firing when no node is clicked未单击任何节点时,Treeview .Click 和 .MouseClick 事件未触发
【发布时间】:2016-11-20 12:01:26
【问题描述】:

如果用户单击树视图(右或左)并且光标不在节点上,我想将所选节点设置为空。我认为如果单击控件的任何部分,TreeView.MouseClick 事件会触发,但它似乎只在单击节点时触发。有没有办法做到这一点?

编辑* 我确实知道如何将选定的节点设置为空,tvwMain.SelectedNode = Nothing 但是当单击控件并且此时没有节点时,我无法这样做,因为 TreeView.MouseClick 和 TreeView.Click 事件确实如此除非单击节点,否则似乎不会触发。

Private Sub tvwMain_NodeMouseClick(sender As Object, e As MouseEventArgs) Handles tvwMain.Click
    Dim p = New Point(e.X, e.Y)
    Dim node As TreeNode = tvwMain.GetNodeAt(p)

    If node IsNot Nothing Then
        tvwMain.SelectedNode = node
        MsgBox("HERE")
    Else
        tvwMain.SelectedNode = Nothing
        MsgBox("TOO")
    End If
End Sub

【问题讨论】:

  • Winforms、WPF 还是 ASP.Net?
  • 我可以将所选节点设置为空,tvwMain.SelectedNode = Nothing 但我想在用户单击控件时执行此操作,但单击下没有节点。还有,WinForms
  • ClickMouseClick 应该可以工作,因为它们只是继承自 Control。甚至还有一个 NodeMouseClick 事件应该只针对节点。

标签: vb.net winforms treeview treenode deselect


【解决方案1】:
TreeNode test = tvwMain.GetNodeAt(tvwMain.PointToClient(Cursor.Position))
If IsNothing(test) Then tvwMain.SelectedNode = Nothing

【讨论】:

  • 我有一个类似的方法(上面添加)但是有同样的问题,事件没有触发,
  • 如果 .Click、.MouseClick、NodeMouseClick 事件不会触发,除非光标位于节点上,然后使用其他事件之一,例如 MouseDown 或 Hover:msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多