首页 > 解决方案 > 如何在 Vb.net 中保留 ListBox 的内容

问题描述

如果我想保留文本框的内容,我会这样做 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

帮助表示赞赏

感谢大家

标签: vb.netloopslistbox

解决方案


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

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

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各个阶段的内容,以确保您获得了预期的文件。folder.Exists在调用 之前也可能值得测试GetFiles,除非您绝对确定 中的每一行都RichTextBox代表一个现有文件夹。


推荐阅读