如何让ListBox显示驱动器中的所有文件?

时间:2017-05-27 10:43:31

标签: vb.net

我目前正在编写反病毒编码,因此对其进行编码和设计非常复杂。无论如何,前几天我遇到了一个问题,我的ListBox没有显示所选驱动器/目录中的所有文件。

我会提供一些代码和图片,以便您明白这一点。

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
    ListBox1.Items.Clear()
    ListBox3.Items.Clear()
    FolderBrowserDialog1.SelectedPath = Path.GetPathRoot(Environment.SystemDirectory) & "Boot\"
    On Error Resume Next
    For Each strDir As String In System.IO.Directory.GetDirectories(FolderBrowserDialog1.SelectedPath)
        For Each strFile As String In System.IO.Directory.GetFiles(strDir)
            ListBox1.Items.Add(strFile)
            ListBox3.Items.Add(strFile)
        Next
    Next
    Timer1.Start()
End Sub

但是,它不是出现在ListBox(ListBox3)中的文件,而只是一个黑屏。也许我应该删除被它包围的TabControl?

See how it's black? It even happens when I run it.

希望这有帮助!如果您需要更多信息,请发表评论。

1 个答案:

答案 0 :(得分:-1)

您可能希望通过创建代码并标准化代码来简化事件,而不是直接将其嵌入到按钮单击中。我已经创建了一个如何动态加载目录和文件的工作示例。

我还建议做一个单独的实验,你可以轻松地将一个测试项目放在一起,以隔离有问题的目录和你想要实现的布局。可能是在调试过程中还有其他事件导致噪音。

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        load_dirs(ListBox2, "H:\")
    End Sub
    Sub load_files(LB As ListBox,
                   IO_dir As String)
        Dim Files_ = IO.Directory.GetFiles(IO_dir)
        With LB.Items
            .Clear()
            .AddRange(Files_)
        End With
    End Sub
    Sub load_dirs(LB As ListBox,
               IO_dir As String)
        Dim dir_ = IO.Directory.GetDirectories(IO_dir)
        With LB.Items
            .Clear()
            .AddRange(dir_)
        End With
    End Sub

    Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox2.SelectedIndexChanged
        Try
            Dim lb As ListBox = sender
            load_files(ListBox1, lb.SelectedItem)
        Catch ex As Exception

        End Try
    End Sub
End Class