2016-11-14 30 views
1

如何在移动文件时显示进度栏?文件移动循环并显示进度条

目前我有这样的:

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);是不是一个放大镜,我还是不知道如何做到这一点。

+0

异步调用此方法并在运行时解除加载消息 – CDrosos

+1

如果要显示单个文件复制的进度,则必须打开2个文件流并复制字节。这样,您可以计算复制时的距离,并显示进度。使用File.Move不能使用 –

+0

一般建议:为了使代码具有可移植性并能在将来的OS版本中生存,最好使用内置的库函数和常量来操作路径变量:Path.Combine和Path。 DirectorySeparatorChar'。这在公开可用的文档和示例代码中经常被忽略。 – dlatikay

回答