如何将 ListBox 的内容保留在 Vb.net

How to keep the content of ListBox in Vb.net

如果我想保留文本框的内容,我会这样做 TextBox1.Text = TextBox1.Text & Something

有没有办法对列表框的项目的内容做同样的事情?

在我的 RichTextBox3 中,我有 C:\Work 目录中的文件列表

我试过这段代码,但它给了我最后一行的内容(它没有添加之前的行)

Do Until number = RichTextBox3.Lines.Length
    Dim directory = "C:\Work\" & RichTextBox3.Lines(number)
    Dim files() As System.IO.FileInfo
    Dim dirinfo As New System.IO.DirectoryInfo(directory)
    files = dirinfo.GetFiles("*", IO.SearchOption.AllDirectories)

    For Each file In files

        ListBox1.Items.Add(file)

    Next
    number = number + 1
Loop

感谢帮助

感谢大家

我不确定这是否会解决您提出的问题,但该代码存在严重问题,我需要提供一个很长的代码片段来解决它,并且在评论中无法阅读。

TextBoxRichTextBoxLines 属性 不是“实时”数据,即它不引用存储在对象中的数组。每次获得 属性 时,都会创建一个新数组。该循环的每次迭代都会得到 RichTextBox3.Lines 两次,所以这显然是错误的。您也不应该像那样将项目一个一个地添加到 ListBox 中。您应该首先创建所有项目的列表,然后通过一次调用 AddRange:

将它们全部添加
Dim files As New List(Of FileInfo)

For Each line In RichTextBox3.Lines
    Dim folderPath = Path.Combine("C:\Work", line)
    Dim folder As New DirectoryInfo(folderPath)

    files.AddRange(folder.GetFiles("*", SearchOption.AllDirectories))
Next

ListBox1.Items.AddRange(files.ToArray())

如果该代码未按预期运行,您可以对其进行调试并在各个阶段查看 files 的内容,以确保您获得了所需的文件。在调用 GetFiles 之前也可能值得测试 folder.Exists,除非您绝对确定 RichTextBox 中的每一行都代表一个现有文件夹。

这会做你想做的事。

number = 0
ListBox1.items.clear()

Do Until number = RichTextBox3.Lines.Length
    Dim directory = "C:\Work\" & RichTextBox3.Lines(number)
    Dim files() As System.IO.FileInfo
    Dim dirinfo As New System.IO.DirectoryInfo(directory)
    files = dirinfo.GetFiles("*", IO.SearchOption.AllDirectories)

    For Each file In files

        ListBox1.Items.Add(file)

    Next
    number = number + 1
Loop