使用多线程处理时启用窗体上的所有控件



当我想开始一些作业时,我不知道我的方式是对还是错,我将禁用所有控制并在作业完成时再次启用。这是我的代码:

public void EnableControls(bool isenable){
this.BeginInvoke(new MethodInvoker(delegate()
{   
    foreach (System.Windows.Forms.Control control in this.Controls)
    {
        control.Enabled = isenable;
    }
}));}

使用 :这是表单控件

每个人都可以向我解释这段代码是错的还是对的。当我使用许多线程时,我看到控件无法启用,我不知道为什么。谢谢!

如果要enable/disable窗体中的所有控件,可以改用form.Enabled。但是,如果您不想参与启用/禁用某些控件,则可以将所有对PanelGroupBox感兴趣的控件放在Enable/Disable面板上。至少如果你不能使用Panel,你的代码在这种情况下很好

最新更新