【发布时间】:2016-11-14 11:33:06
【问题描述】:
如何在移动文件时显示进度条?
目前我有这个:
private void btnMoveFile_Click(object sender, EventArgs e)
{
try
{
if (pathFrom != null && pathTo != null)
{
if (txtRename.Text != null)
{
pathTo = pathTo + "\\" + txtRename.Text;
}
else
{
pathTo = pathTo + "\\" + Path.GetFileName(pathFrom);
}
File.Move(pathFrom, pathTo);
}
else
{
MessageBox.Show("Kies eerst een bestand.");
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 1; i <= 100; i++)
{
// Wait 100 milliseconds.
Thread.Sleep(100);
// Report progress.
backgroundWorker1.ReportProgress(i);
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
// Set the text.
this.Text = e.ProgressPercentage.ToString();
}
但是因为File.Move(pathFrom, pathTo); 不是放大镜,所以我不知道该怎么做。
【问题讨论】:
-
异步调用该方法并在运行时显示加载消息
-
如果要显示单个文件复制的进度,您必须打开 2 个文件流并复制字节。通过这种方式,您可以计算复制时的距离并显示进度。使用 File.Move 你不能
-
一般建议:为了使您的代码可移植并在未来的操作系统版本中存活,最好使用内置库函数和常量来操作您的路径变量:
Path.Combine和Path.DirectorySeparatorChar。这在公开文档和示例代码中经常被忽视。 -
@dlatikay 感谢您的建议。