工作线程旋转时禁用表单的最简单方法是什么?

时间:2011-04-06 20:35:01

标签: c# .net winforms

当我有一个WinForms应用程序需要在后台执行一些繁重的工作,但只有一次任务时(通常),一般程序是相同的:

  • 将UI设置为“工作”状态(禁用按钮以防止后续按下,显示操作进度,可能在主窗体顶部弹出单独的状态表单...)
  • newThread.Start();
  • 完成或取消后,将UI设置回用户可互动状态

问题是,我总是手工连接它。如果我去禁用某些按钮的路线,当用户试图关闭它时使表格确认等等......由于每种形式都不同,所以没有办法解决这个问题。但有时候花时间编写所有这些细节是不值得的,我想做的就是阻止用户点击任何内容并显示应用程序工作的一些视觉指示。

是否有一种简单的方法可以将UI设置为不可交互的“工作”状态,就像灯箱在Web界面中一样?

标准:

  • 最少的代码获胜。 (我很懒。)
  • 用户不再能够与表单进行交互。
    • 表格可以完全不可互动,部分不可互动,无论用户是否相对容纳。
    • 不需要取消操作的选项...可以在以后添加,具体取决于我想花多少时间在用户体验上。

如果只有与BackgroundWorker相对应的UI ...

3 个答案:

答案 0 :(得分:2)

yourForm.Enabled = false;

我认为它不能缩短;)

这将禁用表单上的所有控件,但如有必要,您仍然可以更新进度条或标签。

答案 1 :(得分:1)

另一种方式:

第二种形式,首先调用ShowDialog()。通过将参数传递给第二种形式等来处理后台工作者

这将位于您的主表单前面,基本上禁用它。

在第二张表格中,您可以放置​​繁忙的图片和取消按钮。除非他们取消第二个表单对话框,否则用户无法获得其他表单。

也可以重新使用第二个表单对话框。

答案 2 :(得分:0)

我必须这样做:

total_kills