在线程完成执行之前禁用所有控件

时间:2011-01-13 13:28:44

标签: c#

一旦我启动了win表单应用程序,我就会创建一个后台工作程序来进行一些初始化。在初始化发生时,我希望表单中的所有按钮保持禁用状态。

我在想什么是最好的方法。我能想到的一个简单方法是在线程的已完成事件中设置一个标志。还有其他更好的方法吗?

5 个答案:

答案 0 :(得分:2)

在这种情况下,我通常将控件放入Panel,在后台进程启动时禁用面板,然后在工作完成后再次启用它。这样,您无需跟踪每个控件的Enabled状态。根据您的编码风格,可以在表单的Load事件处理程序(或OnLoad覆盖中)中删除面板并启动后台工作程序。

答案 1 :(得分:1)

我们可以使用委托disablealldelegate来禁用线程初始化中的所有控件,当线程退出时我们可以使用另一个委托enablealldelegate来启用所有控件(或所需的控件)

使用防溅板或装载屏幕或登录表格也是可行的

答案 2 :(得分:0)

有旧的“显示应用程序的屏幕截图”技巧;它给出了近乎即时启动时间的错觉,当然,在用初始化表单替换图像之前,用户无法与控件交互。

您可以保持表单隐藏,直到初始化完成,改为显示启动画面。

初始化完成后,您可以显示一个自动关闭的模式对话框。

答案 3 :(得分:0)

默认情况下,我会禁用“表单设计器”中的按钮。

然后我会在初始化方法的末尾添加代码,以便在其余的初始化完成后启用它们。

答案 4 :(得分:0)