.NET 树视图节点鼠标单击与鼠标单击与单击事件



有人可以澄清一下 .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

谢谢。

.

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

不适用于树视图,它不支持使用键盘"单击"节点。

接下来重要的是用户点击的位置。 树视图中只有某些位置与节点共同生成。 所以这就是为什么有NodeMouseClick,它只在用户点击节点时触发。 并且当他单击其他任何地方时不会触发,例如在展开或折叠节点时。

这是一个方便的事件,实际上没有必要。 因为鼠标单击已经足够好,可以检测到单击是在节点上。 但是它需要更多的代码,你必须使用 HitTest(( 方法。 该事件可帮助您避免编写该代码。 方便。

由于您很少关心用户单击节点以外的任何内容,因此您通常总是倾向于NodeMouseClick。

最新更新