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