For Each tNode In tv.nodes
        tNode.BackColor = color
    Next
    Call SendMessage(tv.hwnd, TVM_SETBKCOLOR, 0, ByVal color)用了这样的代码后,看上去背景颜色是改变了,但当设置了树线以后,在每一层的最后一个节点下面还是会显示出白色,就像下面图中一样
http://nkbbs.org/up2/m/0714/UUGBCFCCLVOQSRHRUTTTOIRVOGKBXPCStree.png
请问这个问题如何解决呢?
在VC中就没有这个问题

解决方案 »

  1.   

    这个问题我也发现了,没有找到解决的办法,在.net2005里的treeview控件弥补了这个bug
      

  2.   

    重绘一下树线就行了。
    用API可以,用属性也行,比如:你可在SendMessage后加上两句
    tv.style = tvwTextOnly
    tv.style = tvwTreelinesPlusMinusPictureText '原来是什么样式这里恢复
      

  3.   

    用API,是这样:dim style as Long
    Const TVS_HASLINES As Long = 2
    style = GetWindowLong(tv.hwnd, GWL_STYLE)
    If style And TVS_HASLINES Then
       SetWindowLong tv.hwnd, GWL_STYLE, style - TVS_HASLINES
       SetWindowLong tv.hwnd, GWL_STYLE, style
    End If
      

  4.   

    似乎不行啊.
        Dim tNode As node
        Dim lstyle As Long
        For Each tNode In tv.nodes
            tNode.BackColor = color
        Next
        Call SendMessage(tv.hwnd, TVM_SETBKCOLOR, 0, ByVal color)
        
        tv.Style = tvwTextOnly
        tv.Style = tvwTreelinesPlusMinusPictureText
    我在程序开始后,给树添加完节点后调用这段代码,但问题似旧
      

  5.   

    那可能与你的树结构有关,这种改变背景色,每一级分支的最后需添加一个没有子节点Item。
    比如:
    +a
     |--b
     |--c
     |--d这样结束不行,前面会有空白,你需在最后加一个封口Item如:
    +a
    ||--b
    ||--c
    ||--d
    e
      

  6.   

    加一个封口Item,那不是会多出一个尾巴吗?