簡體   English   中英

如何在 vb.net 的進度條上顯示名稱

[英]How to display name on progressbar in vb.net

在我的 vb.net winform 應用程序中,將文件從一個目錄寫入另一個目錄。 我有progressbar1 來顯示復制的狀態。 現在我想在progressbar1 上顯示當前正在復制的文件名。

請問有什么建議嗎?

ConfigWindow.FileProgressBar.Visible = True
Dim fileLines() As String = System.IO.File.ReadAllLines("C:\Desktop\Demo.csv")
ConfigWindow.FileProgressBar.Maximum = fileLines.Count + 1
ConfigWindow.FileProgressBar.Minimum = 0
ConfigWindow.FileProgressBar.Value = 0

For index As Integer = ProgressBar1.Minimum To ProgressBar1.Maximum

    ConfigWindow.FileProgressBar.Value = index
    ConfigWindow.FileProgressBar.PerformStep()

Next

在文件復制過程中,進度條一直移動到最后,它工作得非常好。 唯一關心的是在進度條上顯示文件名。

Cody 關於在復制文件時使用 BackgroundWorker 更新 UI 的建議是正確的。

但是,如果您嘗試在標准 Winform ProgressBar 上顯示文本,您會很失望地發現僅使用標准 ProgressBar 無法做到這一點。

在 codeproject.com 有幾個自定義進度條控件,您可以查看:

進度條上的文本自定義控件
自定義進度條控件

我知道 VB.NET 是您的偏好。 其中一個控件是用 C# 編寫的,但封裝在 dll 中,因此您可以在 VB.NET 項目中使用它,就像使用任何其他 Z06456AF1416223FE435 一樣。

當然,另一種選擇是在表單上使用 StatusStrip,其中一個單元格用於進度條,另一個用於顯示正在復制的文件名的文本。

據推測,您的問題是在文件復制操作正在進行時狀態欄永遠不會更新,這意味着您看不到正在復制的單個文件的名稱。

這是在 UI 線程上工作的典型症狀。 您正在阻止狀態欄自我更新的能力。 Stack Overflow 上已經有無數關於這個問題的問題了。 簡單的答案是將文件復制操作移動到BackgroundWorker ,它會定期報告其進度。 從那些在 UI 線程上捕獲的進度報告中,您可以更新狀態欄。

上面鏈接的 MSDN 文檔已經編寫了一個很好的示例。

暫無
暫無

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

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