有人可以澄清.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
感谢。
答案 0 :(得分:1)
.NET区分Click和MouseClick,因为某些控件允许使用键盘触发逻辑单击。例如,按钮和复选框,您可以使用空格键单击它们。当然,当用户操作键盘时,没有可用的鼠标信息,这就是Click事件具有普通EventArgs而不是MouseEventArgs的原因。出于某种原因,只有在关心鼠标位置时才需要使用MouseClick。
它不适用于TreeView,它不支持使用键盘“点击”节点。
接下来重要的是用户点击的。只有TreeView中的某些位置与节点共存。这就是为什么有NodeMouseClick,它只在用户点击节点时触发。并且当他在其他任何地方点击时,例如在扩展或折叠节点时不会触发。
这是一个方便的事件,实际上并不是必需的。因为MouseClick已经足够还检测到点击是在节点上。但它需要更多代码,您必须使用HitTest() method。该事件可帮助您避免编写该代码。方便。
由于您很少关心用户点击除节点之外的任何内容,因此您通常总是喜欢NodeMouseClick。