选择时更改前景/背景颜色的TreeNode

时间:2012-10-09 13:00:07

标签: vb.net winforms treeview

基本上我正在尝试找到一种方法来单击TreeView的某个区域并突出显示该区域。在选择另一个节点后,问题似乎总是不突出显示该区域。我一遍又一遍地玩弄和搜索......好吧......最后我问b / c我无法正常工作。我会显示我的代码但不是它只是一个令人讨厌的整合代码。有没有人有一个好的工作榜样?

仅澄清基础知识:

Private Sub TreeView1_AfterSelect(ByVal sender As Object, _
                                  ByVal e As TreeViewEventArgs) _
                                  Handles TreeView1.AfterSelect           
  'e.Node.BackColor = Color.Yellow 
End Sub

我尝试通过循环遍历集合来使用多种方法来设置和取消选择。它似乎永远不会起作用!

2 个答案:

答案 0 :(得分:1)

尝试将TreeView控件的DrawMode更改为OwnerDrawText并使用此绘图代码:

Private Sub TreeView1_DrawNode(ByVal sender As Object, _
                               ByVal e As DrawTreeNodeEventArgs) _
                               Handles TreeView1.DrawNode
  If (e.State And TreeNodeStates.Selected) <> 0 Then
    e.Graphics.FillRectangle(Brushes.Yellow, e.Bounds)
    TextRenderer.DrawText(e.Graphics, e.Node.Text, e.Node.NodeFont, e.Bounds, _
                          Color.Black, Color.Empty, _
                          TextFormatFlags.VerticalCenter)
  Else
    e.Graphics.FillRectangle(SystemBrushes.Window, e.Bounds)
    TextRenderer.DrawText(e.Graphics, e.Node.Text, e.Node.NodeFont, e.Bounds, _
                          SystemColors.WindowText, Color.Empty, _
                          TextFormatFlags.VerticalCenter)
  End If
End Sub

答案 1 :(得分:0)

在表单中的第一步,放置一个文本框,一个标签和三个horizo​​ntall滚动条 step2-下一步是设置每个控件的属性。

  1. label1的字幕背景
  2. text1-text-(留空)
  3. hscroll1-MAX-255
  4. hscroll2-MAX-255
  5. hscroll3-MAX-255
  6. (上面给出的是控件,属性和设置)   step3-这是最后一步。即编写代码。它非常简单。

    Private Sub HScroll1_Change()(note:end of line1)
      Text1.BackColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value)(note:end of line2)
    End Sub
    
    
    Private Sub HScroll2_Change()(note:end of line1)
      Text1.BackColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value)(note:end of line2)
    End Sub
    
    Private Sub HScroll3_Change()(note:end of line1)
      Text1.BackColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value)(note:end of line2)
    End Sub