.NET TreeView NodeMouseClick与MouseClick对Click事件

时间:2015-11-08 22:20:02

标签: vb.net treeview mouseclick-event

有人可以澄清.NET中TreeView控件的这三个事件之间的区别吗?

单击某个节点时会触发其中的每个人。

在实践中,我应该何时使用其中的每一个?

Private Sub TreeView_Devices_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) _
                                                Handles TreeView_Devices.NodeMouseClick
    DisplaySignals(e.Node, Me)
End Sub

Private Sub TreeView_Devices_MouseClick(sender As Object, e As MouseEventArgs) _
                                                Handles TreeView_Devices.MouseClick
    If e.Button = MouseButtons.Right Then
        MsgBox("Right Click")
    ElseIf e.Button = MouseButtons.Left Then
        MsgBox("Left Click")
    End If
End Sub

Private Sub TreeView_Devices_Click(sender As Object, e As EventArgs) _
                                                Handles TreeView_Devices.Click

End Sub

感谢。

1 个答案:

答案 0 :(得分:1)

.NET区分Click和MouseClick,因为某些控件允许使用键盘触发逻辑单击。例如,按钮和复选框,您可以使用空格键单击它们。当然,当用户操作键盘时,没有可用的鼠标信息,这就是Click事件具有普通EventArgs而不是MouseEventArgs的原因。出于某种原因,只有在关心鼠标位置时才需要使用MouseClick。

它不适用于TreeView,它不支持使用键盘“点击”节点。

接下来重要的是用户点击的。只有TreeView中的某些位置与节点共存。这就是为什么有NodeMouseClick,它只在用户点击节点时触发。并且当他在其他任何地方点击时,例如在扩展或折叠节点时不会触发。

这是一个方便的事件,实际上并不是必需的。因为MouseClick已经足够检测到点击是在节点上。但它需要更多代码,您必须使用HitTest() method。该事件可帮助您避免编写该代码。方便。

由于您很少关心用户点击除节点之外的任何内容,因此您通常总是喜欢NodeMouseClick。