簡體   English   中英

如何保留Vb.net中ListBox的內容

[英]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屬性不是“實時”數據,即它不引用存儲在 object 中的數組。 每次獲取該屬性時,都會創建一個新數組。 對於該循環的每次迭代,您都會得到兩次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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM