【发布时间】:2017-04-03 12:34:46
【问题描述】:
我正在将一个文件夹中的所有 .avi 和 .png 文件复制到另一个文件夹中:
Private Sub CopierSend_Button_Click(sender As Object, e As EventArgs) Handles CopierSend_Button.Click
If MessageBox.Show("Click OK to send media or just Cancel.", "Media Copier", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = DialogResult.OK Then
For Each foundFile As String In My.Computer.FileSystem.GetFiles(FrapsFolder_, Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.avi", "*.png")
Dim foundFileInfo As New System.IO.FileInfo(foundFile)
My.Computer.FileSystem.CopyFile(foundFile, DestFolder_ & foundFileInfo.Name, Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)
Next
Else
'Nothing Yet
End If
End Sub
我想添加一个ProgressBar,它会在每次复制文件时计数,所以我在For Each 循环之前添加了这段代码:
Dim file1() As String = IO.Directory.GetFiles(FrapsFolder_, "*.avi")
Dim file2() As String = IO.Directory.GetFiles(FrapsFolder_, "*.png")
Dim files = file1.Length + file2.Length
Copier_ProgressBar.Step = 1
Copier_ProgressBar.Maximum = files
并在For Each循环中添加了这段代码:
Copier_ProgressBar.Value += 1
这是我所有的代码:
Private Sub CopierSend_Button_Click(sender As Object, e As EventArgs) Handles CopierSend_Button.Click
If MessageBox.Show("Click OK to send media or just Cancel.", "Media Copier", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = DialogResult.OK Then
Dim file1() As String = IO.Directory.GetFiles(FrapsFolder_, "*.avi")
Dim file2() As String = IO.Directory.GetFiles(FrapsFolder_, "*.png")
Dim files = file1.Length + file2.Length
Copier_ProgressBar.Step = 1
Copier_ProgressBar.Maximum = files
For Each foundFile As String In My.Computer.FileSystem.GetFiles(FrapsFolder_, Microsoft.VisualBasic.FileIO.SearchOption.SearchTopLevelOnly, "*.avi", "*.png")
Dim foundFileInfo As New System.IO.FileInfo(foundFile)
My.Computer.FileSystem.CopyFile(foundFile, DestFolder_ & foundFileInfo.Name, Microsoft.VisualBasic.FileIO.UIOption.OnlyErrorDialogs, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)
Copier_ProgressBar.Value += 1
Next
Else
'Nothing Yet
End If
End Sub
ProgressBar 更新,但仅在所有文件都已复制而不是实时更新之后。有什么想法吗?
【问题讨论】:
-
@Bugs :在某种程度上,您的回答确实有助于让我了解 BackgroundWorker 如何工作,但不幸的是,您的示例根本不适合我。我并不是说那是错误的......也许缺少某些东西或我缺少某些东西!我正在测试一些东西......这就是为什么我还没有给出任何答案。无论如何,真的感谢您的宝贵时间!!!
-
嗯,奇怪,我在发布一些示例文件之前进行了测试,它确实有效。能不能调试一下
BackgroundWorker1_DoWork方法是否被调用?很容易做到;在BackgroundWorker1.RunWorkerAsync()此处放置一个断点,然后按 F11 单步执行代码。它应该进入BackgroundWorker1_DoWork。那里可能有错误? -
我将您的代码用于一个新的空白项目并且运行良好。所以,我在主项目中的代码出了点问题。非常感谢你帮助我的朋友!!!
-
不是问题,希望您找出导致问题的原因。
标签: vb.net progress-bar