1.通过对node的expanded属性的设置来完成。当单击B1时,B1的expanded设为true,C1,D1,E1的expanded属性设为false.2.通过设置node的expandedimage属性设置就可以了。

解决方案 »

  1.   

    Private Sub Form_Load()
        With TreeView1
            'Add 方法中,第5个参数就是节点普通状态时图像的索引,第6个参数就是在 Node 被选中时显示的图像的索引
            '要使用此例,请在窗体填加一个TreeView和一个ImageList,要在其中加入两个图片,1是合着的书,2是打开的书        .Nodes.Add , , "a", "a", 1, 2
            .Nodes.Add "a", tvwChild, "a1", "a1", 1
            .Nodes.Add "a", tvwChild, "a2", "a2", 1
            
            .Nodes.Add , , "b", "b", 1, 2
            .Nodes.Add "b", tvwChild, "b1", "b1", 1
            .Nodes.Add "b", tvwChild, "b2", "b2", 1
            .Nodes.Add "b", tvwChild, "b3", "b3", 1
            
        End With
    End SubPrivate Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
        Dim nodEach As Node
        
        For Each nodEach In TreeView1.Nodes
            nodEach.Expanded = False
        Next
        
        Node.Expanded = True
    End Sub
      

  2.   

    吴文智:
    单击B1时,B1也打开了,但在单击子NODE时,它自动关闭了,这样不能进行操作了。
      

  3.   

    又是 treeview的问题,正好。
      

  4.   

    Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
        Dim nodEach As Node
        
        For Each nodEach In TreeView1.Nodes
            If Node.Children > 0 Then  '加一句判断
                nodEach.Expanded = False
            End If
        Next
        
        Node.Expanded = True
    End Sub
      

  5.   

    foolishtiger(吴文智):还是不行,当a失趋焦点时,图标又变为关闭的了,我想是在单击a的子NODE时,他还是打开的,在单击B时才变为关闭。请在指点一下。
      

  6.   

    弱!!!!!!!!!!!!!!!全部在TREEVIEW的GUI自定义介面里边有啊!!!!!!!!MY GAD!!!!!!
    给分!!!!!!!!!
      

  7.   

    yechat(沙尘) :能解决一定给分,请详细说一个好吗。
      

  8.   

    不变是因为这个节点是处于打开状啊。要实现你的功能可用如下代码:
    '这个算法不是最好的,但可以解决问题
    Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
        
        Dim nodEach As Node
        
        For Each nodEach In TreeView1.Nodes
            nodEach.Image = 1
        Next
        
        Node.Image = 2
    End Sub
      

  9.   

            .Nodes.Add , , "a", "a", 1, 2
            
            .Nodes.Add , , "b", "b", 1, 2这两句相应的要改为:
            .Nodes.Add , , "a", "a", 1
            
            .Nodes.Add , , "b", "b", 1
    也就是说不要指定展开时的图象。
      

  10.   

    foolishtiger(吴文智):是我没说清楚,在Microsoft Windows 2000 Professional帮助的界面中,左边的树,当选择一个主目录时,其它主目录都关闭了,只能你选择的这个是打开的。(以上是指图标),但当选择这个主目录下面的子目录或章节时,这个主目录的图标仍是打开的。
    你给的代码当在此主目录下选择子目录时,这个主目录的图标就关闭了。我想让它仍是打开的,只有选择其它的主目录时,才能是关闭。
    太麻烦你了,请在帮一下,不好意思了。
      

  11.   

    Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
    '如果你的树只有一层,可用这种方式,多层的话要判断一下,还有如果有多层时,是不是每个节点都是打开的图呢?
        Dim nodEach As Node    For Each nodEach In TreeView1.Nodes
            nodEach.Image = 1
        Next
        
        If Node.Parent Is Nothing Then
        Else
            Node.Parent.Image = 2
        End If
    End Sub
      

  12.   

    Private Sub Form_Load()
        With TreeView1
            'Add 方法中,第5个参数就是节点普通状态时图像的索引,第6个参数就是在 Node 被选中时显示的图像的索引
            '要使用此例,请在窗体填加一个TreeView和一个ImageList,要在其中加入两个图片,1是合着的书,2是打开的书        .Nodes.Add , , "a", "a", 1
            .Nodes.Add "a", tvwChild, "a1", "a1", 1
                    .Nodes.Add "a1", tvwChild, "a11", "a11", 1
            .Nodes.Add "a1", tvwChild, "a12", "a12", 1
            .Nodes.Add "a1", tvwChild, "a13", "a13", 1
            .Nodes.Add "a", tvwChild, "a2", "a2", 1
            
            .Nodes.Add "a2", tvwChild, "a21", "a21", 1
            .Nodes.Add "a2", tvwChild, "a22", "a22", 1
            .Nodes.Add "a2", tvwChild, "a23", "a23", 1
            
            .Nodes.Add , , "b", "b", 1
            .Nodes.Add "b", tvwChild, "b1", "b1", 1
            .Nodes.Add "b", tvwChild, "b2", "b2", 1
            .Nodes.Add "b", tvwChild, "b3", "b3", 1
            .Nodes.Add "b3", tvwChild, "b31", "b31", 1
            .Nodes.Add "b3", tvwChild, "b32", "b32", 1
            .Nodes.Add "b3", tvwChild, "b33", "b33", 1
        End With
    End SubPrivate Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
    Dim nodEach As Node
        
        For Each nodEach In TreeView1.Nodes
            If Node.Children > 0 Then
                nodEach.Expanded = False
                nodEach.Image = 1
            End If
        Next   If Node.Children > 0 Then
       Node.Expanded = True
         Node.ExpandedImage = 2
       Else
       
       End IfEnd Sub
      

  13.   

    foolishtiger(吴文智) : 图标还是不能象我说的那样控制。wjhwdm(啊)的程序可以控制图标了,但当在子NODE有下一级NODE时,单击时就自动收缩了。