none
怎样加载驱动器所有目录 RRS feed

答案

  • 用FindFirstFile,FindNextFile把文件名读到内存。
    2009年1月12日 22:55
    版主
  •  

    Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    accessFile("D:\", TreeView1.Nodes.Add("D:\", "D:\"))

    End Sub

    Sub accessFile(ByVal path As String, ByVal treeNode As TreeNode)

    For Each pas As String In My.Computer.FileSystem.GetDirectories(path)

    Dim t As TreeNode = treeNode.Nodes.Add(pas, IO.Path.GetFileName(pas))

    accessFile(pas, t)

    Next

    End Sub

     

    End Class

     

     

    以上是 treeview 的用法  但是如果你盘的文件太多   不适合用这种办法

     

    还有一种是使用 vb6 兼容的.net控件

     

    在工具箱  的右健菜单  选 “选择项”   寻找  microsoft.visualbasic.compatibility.vb6.dirlistbox

     

    这个控件  可以达成基本的文件列表 功能  而且不会因为文件太深而耗费速度

    2009年1月13日 7:55

全部回复

  • 用FindFirstFile,FindNextFile把文件名读到内存。
    2009年1月12日 22:55
    版主
  • 能不能详细一些

    2009年1月13日 0:12
  •  

    Function accessFile(ByVal path As String) As String
            Dim sb As New System.Text.StringBuilder
            For Each fs As String In My.Computer.FileSystem.GetFiles(path)
                sb.AppendLine(fs)

            Next
            For Each pas As String In My.Computer.FileSystem.GetDirectories(path)
                sb.AppendLine(pas)

                sb.AppendLine(accessFile(pas))

            Next

            Return sb.ToString
        End Function

     

     

    稍微修改下  你就可以把所有的路径加入combo

    2009年1月13日 2:26
  •  韦恩卑鄙 写:

     

    Function accessFile(ByVal path As String) As String
            Dim sb As New System.Text.StringBuilder
            For Each fs As String In My.Computer.FileSystem.GetFiles(path)
                sb.AppendLine(fs)

            Next
            For Each pas As String In My.Computer.FileSystem.GetDirectories(path)
                sb.AppendLine(pas)

                sb.AppendLine(accessFile(pas))

            Next

            Return sb.ToString
        End Function

     

     

    稍微修改下  你就可以把所有的路径加入combo

     

    这样改吗?

    在retrun sb.tostring后面:

    me.combobox1.items.add(sb.appendline(pas))

    这样写明显不对

    combobox1.datsource=accessfile()

    这样写提示错误,没有为PATH指定路径

     

     

    2009年1月13日 3:32
  • Sub accessFile(ByVal path As String)      

        For Each pas As String In My.Computer.FileSystem.GetDirectories(path)
               me.combobox1.items.add(pas)

               accessFile(pas)

            Next

        End sub

    2009年1月13日 4:31
  •  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim path As String = ""
            For Each pas As String In My.Computer.FileSystem.GetDirectories(Path)
                Me.ComboBox1.Items.Add(pas)

                'accessFile(pas)

            Next

    提示错误:路径形式不合法

     

    我要说的是像folder打开的那种树形目录表,不只是文件名

     

    2009年1月13日 4:58
  •  

    1   。。。这是一个递归sub  你为什么要把它拆开

    path 的初始  为"c:\"这样的路径  返回的是所有c:\下面的目录

     

    2  你要目录 而不是目录路径 就不能用  combobox

    要么用 folder browser dialog

    要么 用 tree view

    combo不能显示图标

     

     

     

    2009年1月13日 7:30
  •  

    Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    accessFile("D:\", TreeView1.Nodes.Add("D:\", "D:\"))

    End Sub

    Sub accessFile(ByVal path As String, ByVal treeNode As TreeNode)

    For Each pas As String In My.Computer.FileSystem.GetDirectories(path)

    Dim t As TreeNode = treeNode.Nodes.Add(pas, IO.Path.GetFileName(pas))

    accessFile(pas, t)

    Next

    End Sub

     

    End Class

     

     

    以上是 treeview 的用法  但是如果你盘的文件太多   不适合用这种办法

     

    还有一种是使用 vb6 兼容的.net控件

     

    在工具箱  的右健菜单  选 “选择项”   寻找  microsoft.visualbasic.compatibility.vb6.dirlistbox

     

    这个控件  可以达成基本的文件列表 功能  而且不会因为文件太深而耗费速度

    2009年1月13日 7:55
  •  

    哦,因为我有看到COMBOBOX显示了系统所有盘符和目录,所以才发贴,那我自己在看一下
    2009年1月13日 23:34