有没有办法开始以模态方式显示对话框,但不是隐藏它,而是将其更改为非模式对话框时将其保持可见状态?如何制作“部分”模式对话框?
我想显示一个对话框,阻止显示对话框的方法。然后,当用户单击我想要的对话框上的'完成'按钮时:
- 对话框保持可见状态。
- 控制返回到显示对话框的方法。
我已经通过在一个单独的STA线程上运行对话框并使用一个事件来阻止主UI线程直到按下'Finish'来实现这个结果,但是这个方法有一个问题:你可以点击在“主”窗口的关闭按钮上,而对话框可见时,隐藏对话框时主窗口关闭。
更新
感谢您的回应。对不起 - 它看起来像我在平衡了太多的背景和不足之间的错误。
该窗体实际上是一个模式化的“向导”对话框 - 它看起来,以模态方式位于主应用程序的前面,然后隐藏起来。因此,就用户而言,不存在不规范的怪异现象。唯一的区别是对话是由UI线程中的一系列回调驱动的,所以我不认为在它的生命周期中使它成为真正的模态(通过调用ShowDialog)是可行的。第一个回调必须显示对话框,然后在用户通过对话框UI设置其偏好时阻止。之后,对话框保持可见状态,并显示进度条页面,同时通过UI线程进行各种其他回调。最终形式是隐藏的。表单启动时,用户没有与主窗口进行交互。就他们而言,它看起来应该是主UI线程的100%模态。
(该表单是Visual Studio向导的对话框 - 这些由UI线程中的一系列回调驱动)。另一种方法是显示对话框,隐藏它,立即显示最顶层的“进度”表单,然后隐藏该对话框,但我认为展示单个对话框对用户而言更加无缝。
再次 - 抱歉混淆!
希望的进一步的解释有助于澄清的用户交互。 – mackenir 2009-04-28 10:25:38
这绝对是一种模态对话框 - 它在创建新项目时从用户那里获取设置,然后在生成项目时显示进度条。 – mackenir 2009-04-28 17:08:47