【发布时间】:2016-08-14 07:16:53
【问题描述】:
这是我第一次在 C# 中使用进度条。 我的代码正在复制一些文件,我想通过进度条显示进度。
我不喜欢我的代码的一点是,我必须通过所有文件来设置栏的最大值……然后我再次通过相同的过程来复制文件。
如果不这样做,我就是想不出一种方法来确保在酒吧中顺利进行。我首先必须知道最大值对吗?还是有什么诀窍?
代码如下:
-
设置最大值:
private static void setProgressBar(List<Source> sources, List<Destination> destinations) { progress.Value = 0; progress.Maximum = 0; foreach (var source in sources) { progress.Maximum += System.IO.Directory.GetDirectories(source.directory, "*", SearchOption.AllDirectories).Count() * destinations.Count + System.IO.Directory.GetFiles(source.directory, "*.*", SearchOption.AllDirectories).Count() * destinations.Count; } -
复制文件:
public static void CopyData(List<Source> sources, List<Destination> destinations, RichTextBox box, ProgressBar bar) { log = box; progress = bar; setProgressBar(sources, destinations); foreach (var source in sources) { foreach (var dirPath in System.IO.Directory.GetDirectories(source.directory, "*", SearchOption.AllDirectories)) { foreach (var destination in destinations) { logger(dirPath); System.IO.Directory.CreateDirectory(dirPath.Replace(source.directory, destination.directory)); } } foreach (var newPath in System.IO.Directory.GetFiles(source.directory, "*.*", SearchOption.AllDirectories)) { foreach (var destination in destinations) { logger(newPath); File.Copy(newPath, newPath.Replace(source.directory, destination.directory), true); } } } } -
增加进度条:
私有静态无效记录器(字符串输出) { log.Text += "复制:" + 输出 + System.Environment.NewLine; log.SelectionStart = log.Text.Length; log.ScrollToCaret(); 进度.增量(1); }
所以我两次运行相同的代码......我不喜欢这样:)
【问题讨论】:
标签: c# progress-bar