0


我有一个带有 HotTracking = True 的 System.Windows.Forms.TreeView
我希望仅在特定节点中将 HotTracking 设置为 False。

例如,我希望父亲不可点击,而孩子可点击。

谢谢

4

1 回答 1

0

“可点击”非常模糊。我假设您不希望它们是可选的。使用 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
于 2013-04-05T12:08:39.937 回答