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 に答える