2012-11-30 27 views
0

當我想開始一些工作時,我不知道我的方式是對還是錯,我將禁用所有控制,並在作業完成時再次啓用。這是我的代碼:使用多線程時啓用窗體上的所有控件?

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

用:這是控制形式

每個人都可以給我解釋一下,這個代碼是錯還是對。當我使用許多線程時,我看到控件無法啓用,我不知道爲什麼。謝謝 !

+0

你是否嘗試設置this.Enabled = isEnabled?它應該啓用/禁用所有孩子 –

+0

@ArsenMkrt對不起,我忘了我需要保持「停止按鈕」來停止工作,如果用戶想要的。 –

+0

你可以把所有應該在面板中啓用/禁用的控件,並啓用/禁用面板嗎? –

回答

0

如果您想要enable/disable表單中的所有控件,則可以使用form.Enabled代替。但是,如果有一些控件不想參與啓用/禁用,則可以將所有對PanelGroupBoxEnable/Disable面板感興趣的控件置於其中。至少如果你不能使用Panel,你的代碼在這種情況下是好的

+0

謝謝你:)很酷的回答:) –

相關問題