0

我有一个 winform 项目,它列出了指定文件夹中的所有文件。它允许用户为每个文件选择一个新的目的地,当用户为他想要移动的所有文件选择了目的地时,它会一个一个地移动文件。

我的下一步是,我需要在移动文件时显示确认表单,并在移动文件时将每个文件的名称和目的地添加到确认表单中。

我的问题是:如何在我已经加载确认表单的控件后添加更多文本(confirm.showdialog()从我的其他表单使用,没有任何用户交互?我想我需要从原始表单执行,因为它需要显示每个文件都开始移动该文件时,但我愿意接受任何建议:)

TIA

4

3 回答 3

1

以上两个答案都很好。

如果我理解正确,您的主表单将允许一个人选择多个文件,然后选择它们的目的地并启动移动过程。如果这是您需要的,我只需执行以下操作:

  1. 创建一个新表单,向用户报告该过程,不需要任何交互,而只是通知用户正在移动哪个文件;
  2. 创建一个 BackgroundWorker 对象的实例,并从 BackgroundWorker.DoWork() 方法(在您的主窗体中)调用文件移动方法;
  3. 标记您的 BackgroundWorker 以报告进度,然后从您的 move-file 方法中调用 BackgroundWorker.ReportProgress() 事件处理程序;
  4. 使用先前创建的文件名列表来获取其名称,并在更改文件时将其报告给您的文件移动对话框表单。当您将 CurrencyManager 移动到列表中的下一个项目时,标签上的简单 DataBinding 应该可以解决问题,或者您可以更简单地使用列表索引器来获取特定索引处的文件名;
  5. 当用户启动移动过程时,获取您的文件名并计算它们,然后将 ProgressBar 最大值设置为您拥有的文件数。
  6. BackgroundWorker.ReportProgress() 方法将整数值作为其参数,然后,使用 ProgressChanged() 事件处理程序,您将能够通过在索引位置获取文件名来显示正在复制到窗口的文件的名称, ReportProgress() 方法给出的索引。

这将允许您使用补充线程的性能,而无需“冻结”创建表单的主线程,然后您将能够同时执行文件移动,并将文件名显示到进度表单,同时通过 ProgressBar 控件直观地向用户说明进度,并根据需要显示文件名。

这有帮助吗?

于 2010-03-14T04:20:30.560 回答
0

制作另一个表单而不是使用预设对话框不是更简​​单吗?

这样你就可以有一个你填充和刷新的文本框

于 2010-03-14T03:38:18.067 回答
0

您可以将所有代码放入确认对话框窗口中以显示文件的移动。

但是为了提供更完整的解决方案,您能否告诉我您是如何收集文件移动信息的。

一个好的解决方案是只传入要移动的文件列表,然后在对话框中执行移动功能。

于 2010-03-14T03:39:10.003 回答