我有一个带有 HotTracking = True 的 System.Windows.Forms.TreeView
我希望仅在特定节点中将 HotTracking 设置为 False。
例如,我希望父亲不可点击,而孩子可点击。
谢谢
“可点击”非常模糊。我假设您不希望它们是可选的。使用 BeforeSelect 事件很容易做到这一点,您可以取消它。例如:
Private Sub TreeView1_BeforeSelect(ByVal sender As Object, ByVal e As TreeViewCancelEventArgs) Handles TreeView1.BeforeSelect
If e.Node.Nodes.Count > 0 Then e.Cancel = True
End Sub
这并不能形成一个很好的用户界面,当他的点击没有效果时,用户会很困惑。您可以通过不放弃单击并自动选择您允许选择的节点来使其更直观。使它看起来类似于:
Private Sub TreeView1_BeforeSelect(ByVal sender As Object, ByVal e As TreeViewCancelEventArgs) Handles TreeView1.BeforeSelect
If e.Node.Nodes.Count > 0 Then
e.Cancel = True
Me.BeginInvoke(New Action(Of TreeNode)(AddressOf SelectNode), e.Node.Nodes(0))
End If
End Sub
Private Sub SelectNode(ByVal node As TreeNode)
node.Expand()
node.TreeView.SelectedNode = node
End Sub