这是我编的,没有列出文件,只是把指定位置下的所有子目录列出来 入口参数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
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调试通过
其实很容易实现: 第一种方法用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
http://www.csdn.net/expert/topic/666/666906.xml?temp=.9986231
你可以使用广度优先算法,判断treeview点击,然后载入!看上去速度会快!
给你一段代码参考一下:
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
2、一般都是没有一次性读入所有的文件的;都是读入跟点;然后当用户点击跟点的时候,把相应的子节点读入;这样子根本看不到延迟;你用别人的控件也都是这么做的;谢谢,给分!~
我已发出,请查收。
入口参数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调试通过
第一种方法用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