【问题标题】:file move loop and show progressbar文件移动循环并显示进度条
【发布时间】: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.CombinePath.DirectorySeparatorChar。这在公开文档和示例代码中经常被忽视。
  • @dlatikay 感谢您的建议。

标签: c# progress


【解决方案1】:

考虑使用来自 shell32 的 SHFileOperation API。 此答案中描述了一个可行的解决方案:How to bring up the built-in File Copy dialog? 它适用于复制以及移动和删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    相关资源
    最近更新 更多