在表单上,通过单击按钮启动长时间运行的任务。该任务在一个单独的工作线程上运行,并在任务运行时显示另一个带有进度条的表单。
当任务完成或取消时,显示进度条的表单将被关闭。虚拟代码可能如下所示:
task.DoWorkAsync();
progressBar.Show(parent);
当任务完成时
progressBar.Close();
但有时确切地说,显示进度条的表单会被关闭,主表单会转到后台。更确切地说,我需要做些什么来重现这个问题:
现在,在进度条关闭后,我的应用程序窗口消失在我之前带到前面(此处为Excel)的另一个窗口之后。
当然,我上面描述的是我的应用程序的粗略轮廓。但我需要的是找出为什么我的表单在进度条关闭时消失在其后面。
答案 0 :(得分:1)
的MainForm
ProgressBar progress = new ProgressBar(this);
progress.Show();
this.Hide();
进度
parent.Show();
progress.Hide();
或者,您可以使用ShowDialog()
,这将保持主窗体打开但无法访问,直到进度条窗体关闭。
答案 1 :(得分:0)
如果我理解正确,当您关闭显示进度条的Form
时,主Form
会转到后台?
如果是这样,您可能需要在显示进度条表单后将焦点返回到主窗体,因为它会占用焦点。
这是一个堆栈溢出问题,讨论了表单焦点: