Вы не можете иметь переключатели в TreeView, только флажки.
Решением было бы заставить флажки вести себя как переключатели:
Private Sub TreeView1_AfterCheck(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterCheck
If e.Node.Checked Then
If e.Node.Level = 2 Then
For Each node As TreeNode In e.Node.Parent.Nodes
If node IsNot e.Node Then
node.Checked = False
End If
Next
Else
e.Node.Checked = False
End If
End If
End Sub
Проверка e.Node.Level = 2
гарантирует, что только узлы внука ведут себя как переключатели.
Установите свойство TreeView CheckBoxes
на True
, чтобы включить флажки.
Это пример того, как изменить стиль текста для выбранных узлов и его родителей:
Private Sub TreeView1_BeforeSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewCancelEventArgs) Handles TreeView1.BeforeSelect
If TreeView1.SelectedNode IsNot Nothing Then
MakeSelected(TreeView1.SelectedNode, False)
End If
MakeSelected(e.Node, True)
End Sub
Private Sub MakeSelected(ByVal node As TreeNode, ByVal selected As Boolean)
Dim SelectedFont As New Font(TreeView1.Font, FontStyle.Bold)
node.NodeFont = IIf(selected, SelectedFont, TreeView1.Font)
node.ForeColor = IIf(selected, Color.Blue, TreeView1.ForeColor)
If node.Parent IsNot Nothing Then
MakeSelected(node.Parent, selected)
End If
End Sub
Он рекурсивно изменяет стиль текста выбранного узла и его родителей и устанавливает его обратно в стиль по умолчанию TreeView при изменении выделения.