只需MainWindow单击按钮,我就可以进行一些可能需要几秒钟的计算.在那段时间我想展示一个小对话框(或单独的窗口),说"请等待......"在其中间MainWindow将完全阻止它,因此在关闭此对话框之前,用户无法执行任何操作.我尝试创建一个窗口并打开它,window.ShowDialog();但这当然不会继续说明......
有没有其他方法可行?
解决方案非常简单 - 您应该将您的MainForm设置为Show中的父级(不是ShowDialog,如您所注意到的),然后在您自己的表单上调用Enabled = false:
Form2 f = new Form2();
f.Show(this);
this.Enabled = false;
//do your stuff here
f.Hide();
this.Enabled = true;
f.Dispose();
f = null;
Run Code Online (Sandbox Code Playgroud)
这里唯一的问题是你不能取消你的过程...但是如果你的计算是在另一个线程中,另一个表单的控件将触发他们的处理程序,你可以取消另一个线程中的工作.