VB里有TreeView控件,可是实现树型显示,不过要读文件夹和子文件夹和文件的话可能要用到windows的API了,具体的可以查看MSDN
源码,呵呵,我就不写了,我只是说说我的实现方法

解决方案 »

  1.   

    遍历文件夹
    http://www.csdn.net/expert/topic/666/666906.xml?temp=.9986231
      

  2.   

    谢谢大家的参与!   我用递归方法遍历,而且能成功的向TreeView控件的添加,但是如果子文件夹和文件多(比方说我遍历整个F:盘,有10G文件),速度很慢,我想有没有速度快的方法,最好有现成的控件!
      

  3.   

    谢谢大家,我的Email地址是:[email protected]
      

  4.   


    你可以使用广度优先算法,判断treeview点击,然后载入!看上去速度会快!
      

  5.   

    还是自己写控件吧,别人的用的放心吗?
    给你一段代码参考一下:
    Dim MyFile, MyPath, MyName' 返回“WIN.INI” (如果该文件存在)。
    MyFile = Dir("C:\WINDOWS\WIN.ini")   ' 返回带指定扩展名的文件名。如果超过一个 *.ini 文件存在,
    ' 函数将返回按条件第一个找到的文件名。
    MyFile = Dir("C:\WINDOWS\*.ini")' 若第二次调用 Dir 函数,但不带任何参数,则函数将返回同一目录下的下一个 *.ini 文件。
    MyFile = Dir' 返回找到的第一个隐式 *.TXT 文件。
    MyFile = Dir("*.TXT", vbHidden)' 显示 C:\ 目录下的名称。
    MyPath = "c:\"   ' 指定路径。
    MyName = Dir(MyPath, vbDirectory)   ' 找寻第一项。
    Do While MyName <> ""   ' 开始循环。
       ' 跳过当前的目录及上层目录。
       If MyName <> "." And MyName <> ".." Then
          ' 使用位比较来确定 MyName 代表一目录。
          If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
             Debug.Print MyName   ' 如果它是一个目录,将其名称显示出来。
          End If
       End If
       MyName = Dir   ' 查找下一个目录。
    Loop
      

  6.   

    楼上的方法不可取;谢谢1、使用文件遍历,一般使用FSO方法,上面我已经给了例子;
    2、一般都是没有一次性读入所有的文件的;都是读入跟点;然后当用户点击跟点的时候,把相应的子节点读入;这样子根本看不到延迟;你用别人的控件也都是这么做的;谢谢,给分!~
      

  7.   

    gxingmin (小高)  
    我已发出,请查收。
      

  8.   

    问题:我也是用fso方法遍历,但是我必须要一次载入所有文件夹和文件到TreeView控件,因为我有对其“全部展开”和“全部折叠”的菜单。我看别人的应用程序就有此项功能,而且一次性载入的文件很多,速度也很快,可能用了控件吧!搜索有两层就可以了,就知道是否需要折叠和展开了;默认都和并起来;点开一层,判断下一层的还有没有下一层,如果有就需要折叠和展开,一次两层,时间也不长的;绝对不能判断全部,什么程序也受不了!
      

  9.   

    这是我编的,没有列出文件,只是把指定位置下的所有子目录列出来
    入口参数BDir是驱动器(标准控件,英文是DirListBox),ListBox(也是一个标准控件,StartPath是起始地址(字串符型)
    Function Search(BDir As DirListBox, BList As ListBox, StartPath As String)
     Dim StartRow, EndRow As Variant
     Dim Increase As Variant
     Dim Running As Boolean
     
     Running = True
     Increase = 0
     BDir.Path = StartPath
     StartRow = 0
     EndRow = BDir.ListCount - 1
     
     For N = 1 To BDir.ListCount
      BList.AddItem BDir.List(N - 1)
     Next N
      
     Do
      DoEvents
      For N = StartRow To EndRow
       BDir.Path = BList.List(N)
       Increase = Increase + BDir.ListCount
        For m = 1 To BDir.ListCount
         BList.AddItem BDir.List(m - 1)
        Next m
      Next N
      If Increase = 0 Then Running = False
      StartRow = EndRow + 1
      EndRow = EndRow + Increase
      Increase = 0
     Loop Until Running = False
     MsgBox BList.ListCount
    End Function再加一点就可以列出目录下的文件(加一个文件列表框)
    你只要隐藏这几个列表框,用里面的数据就行了
    vb6/win2k调试通过
      

  10.   

    其实很容易实现:
       第一种方法用FSO对象实现
        楼上的兄弟说得很好
       第二种方法用VB自带的函数;DIR
           DIR(“FILENAME”)返回FILENAME的完整路径:
           DIR()返回满足条件的第下一个完整路径;
        这里只给出某一目录下所有文件代码    
        dim tempfilename as string
        dim filenamearr(0 to 100000)
        dim i as integer    
        dim temp
        tempfilename=dir(filename)
        do while not trim(tempfilename)<>""
            filenamearr(i)=trim(tempfilename)
            i=i+1
            tempfilename=dir()
         loop