有没有办法开始以模态方式显示对话框,而不是隐藏它,以便在将其更改为非模态对话框时保持可见?
我想显示一个对话框,阻止显示对话框的方法.然后,当用户单击我想要的对话框上的"完成"按钮时:
我通过在一个单独的STA线程上运行对话框,并使用事件来阻止主UI线程直到按下"完成"来实现这个结果,但是这个方法有一个问题:你可以点击关闭按钮.对话框可见时显示"主"窗口,隐藏对话框时主窗口关闭.
感谢到目前为止的回复.对不起 - 看起来我在太多的背景和不够之间得到了平衡.
该表单实际上是一个模态"向导"对话框 - 它出现,模态地位于主应用程序的前面,然后被隐藏.因此,就用户而言,没有非标准的怪异.唯一的区别是对话框是由来自UI线程的一系列回调驱动的,所以我不认为它的真实模态(通过调用ShowDialog)的生命周期是可行的.第一个回调必须显示对话框,然后在用户通过对话框UI设置其首选项时阻止.之后,对话框保持可见并显示进度条页面,同时从UI线程进行各种其他回调.最终表格被隐藏了.表单启动时,用户不与主窗口交互.就他们而言,它似乎应该是主UI线程的100%模态.
(该表单是Visual Studio向导的对话框 - 这些是由UI线程上的一系列回调驱动的).另一种方法是显示对话框,隐藏它,立即显示最顶层的"进度"表单,然后隐藏它,但我认为显示单个对话框对用户来说是更加无缝的体验.
再次 - 抱歉混乱!
也许你想重新考虑你的互动模式?你打算如何向用户解释这个?他们有一个关于计算机程序如何工作的内在模型,你最好有一个很好的理由来打破它.他们了解模态对话,他们了解非模态对话,他们了解检查员.选择一个,然后应用它.
模态对话框用于短时交互.他们不应该阻止退出应用程序.用户控制交互,程序仅提供所需的最小限制.
[解释后,替换]在模态对话框中显示进度条有什么问题?单击确定后开始处理,禁用所有按钮,仅保持取消按钮处于活动状态?如果需要很长时间,用户可能想要中止操作.只有在完成处理后才关闭对话框.
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |