2016-07-27 67 views
0

点击一个按钮后,我会显示一个进度表并开始一个任务。我想禁用按钮或使进度形成一个模式,所以任何东西都不应该在主窗体上点击,直到进度完成。进度条应限制主窗口上的按钮被点击

我试过路过所有者引用作为参数调用进度条窗体的ShowDialog的时候:

m_oProgressBarForm = new ProgressBarForm(); 
m_oProgressBarForm.ShowDialog(this); 

请帮助我如何阻止用户以灰色主窗口或使按钮不会再次点击按钮可点击或将进度条窗口设置为模态?

当前用户可以再次单击该按钮,并启动另一个实例,使应用程序无法使用,并且必须使用任务管理器手动终止应用程序。

+2

您可能需要为上下文添加更多代码 – Brandon

+0

您的进度表看起来像是模态。我们不清楚为什么你说这不是。 – LarsTech

+0

是的,但没有达到应有的目的。你能建议如何纠正这个问题吗? – PSDebugger

回答

0

如果使用ShowDialog()显示表单,则直到关闭对话框后才会执行其后的代码。但是,您可能需要显示进度条表单,然后执行一些操作,然后关闭表单,您无法将进度表单显示为模式。

相反,你可以禁用你的主要形式和显示设置的主要形式为其父你的进度表,然后执行耗时的任务,最后,关闭进度表格,并启用主要形式有:

private async void Button1_Click(object sender, EventArgs e) 
{ 
    var f = new Form(); //Your progress form 
    f.Show(this); 
    this.Enabled = false; 
    try 
    { 
     //For example a time-consuming task 
     await Task.Delay(5000); 
    } 
    catch (Exception ex) 
    { 
     //Handle probable exceltions 
    } 
    f.Close(); 
    this.Enabled = true; 
    this.BringToFront(); 
}