首先将TreeView 的DrawMode改为OwnerDrawText,然后再DrawMode事件中写下如下语句:
Private Sub treeView1_DrawNode(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawTreeNodeEventArgs) Handles treeView1.DrawNode
Dim foreColor As Color
Dim backColor As Color
If (e.State And TreeNodeStates.Selected) <> 0 Then
foreColor = Color.OrangeRed '鼠标点击节点时文字颜色
backColor = Color.SkyBlue '鼠标点击节点时背景颜色
ElseIf (e.State And TreeNodeStates.Hot) <> 0 Then
foreColor = Color.Green '鼠标经过时文字颜色
backColor = Color.DarkSeaGreen '鼠标经过时背景颜色
Else
foreColor = Me.treeView1.ForeColor
backColor = Me.treeView1.BackColor
End If
e.Graphics.FillRectangle(New SolidBrush(backColor), New Rectangle(e.Bounds.Location, New Size(Me.treeView1.Width - e.Bounds.X, e.Bounds.Height)))
e.Graphics.DrawString(e.Node.Text, Me.treeView1.Font, New SolidBrush(foreColor), e.Bounds)
End Sub
值得注意的还有一点就是需要将 TreeView.HotTracking 属性设置成为True 否则鼠标的经过效果是不会出现的