日期:2014-05-17  浏览次数:21616 次

怎么取消Treeview节点选中时蓝色背景
我只想要改变选中节点的图标,不想要蓝色的加深色背景显示,希望选中与没选中的背景色不变。
treeview

------解决方案--------------------
HideSelection属性设置为True
在SelectionChanged事件中将焦点设置给其它控件。
------解决方案--------------------
重写


reeView1.DrawMode = TreeViewDrawMode.OwnerDrawText
        AddHandler TreeView1.DrawNode, AddressOf treeView_DrawNode

   Private Sub treeView_DrawNode(ByVal sender As Object, ByVal e As DrawTreeNodeEventArgs)
        Dim f As Font = If(e.Node.NodeFont IsNot Nothing, e.Node.NodeFont, e.Node.TreeView.Font)

        Dim fore As Color = e.Node.ForeColor
        'If fore = Color.Empty Then
        '    fore = e.Node.TreeView.ForeColor
        'End If
       If IsTreeNodeChanged(e.Node) Then
            fore = Color.Red
        End If
        ' Have to indicate focus somehow, how about yellow foreground text?
        If e.Node Is e.Node.TreeView.SelectedNode Then
            'fore = SystemColors.HighlightText
            If (e.State And TreeNodeStates.Focused) <> 0 Then
                f = New Font("Meiryo UI", 9.0!, FontStyle.Bold)
            End If
        End If
        Dim sz As Size = TextRenderer.MeasureText(e.Node.Text, New Font("Meiryo UI", 9.0!, FontStyle.Bold))
        Dim rc As New Rectangle(e.Bounds.X - 1, e.Bounds.Y, sz.Width + 2, e.Bounds.Height)

        Dim back As Color = e.Node.BackColor
       'If IsTreeNodeDiff(e.Node) Then
        '    back = Color.LightBlue

        'Else
        If back = Color.Empty Then
            back = e.Node.TreeView.BackColor
        End If
      &n