如何将 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
感谢帮助
感谢大家
我不确定这是否会解决您提出的问题,但该代码存在严重问题,我需要提供一个很长的代码片段来解决它,并且在评论中无法阅读。
TextBox
或 RichTextBox
的 Lines
属性 不是“实时”数据,即它不引用存储在对象中的数组。每次获得 属性 时,都会创建一个新数组。该循环的每次迭代都会得到 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
如果我想保留文本框的内容,我会这样做
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
感谢帮助
感谢大家
我不确定这是否会解决您提出的问题,但该代码存在严重问题,我需要提供一个很长的代码片段来解决它,并且在评论中无法阅读。
TextBox
或 RichTextBox
的 Lines
属性 不是“实时”数据,即它不引用存储在对象中的数组。每次获得 属性 时,都会创建一个新数组。该循环的每次迭代都会得到 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