我有一个应用程序,显示在同一个消息循环线程中托管的多个不同的顶级窗口。这是为了允许用户打开相同数据的不同视图。 (在MS Outlook中,您可以右键单击另一个文件夹并选择“在新窗口中打开”以获得类似的行为)。
我遇到的问题是,当其中一个窗口打开一个模态对话框或消息框时,它会冻结父窗口的所有兄弟窗口。
当我打开一个模态对话框时,我希望它只是相对于父/所有者窗口的模态,而不是相对于应用程序中其他顶级窗口的模态。有没有合理的方法来做到这一点?我考虑过了:
有什么建议吗?
答案 0 :(得分:4)
这就是'模态'的含义。您必须使其成为非模态,使用表单并使用其Show()方法显示它。要禁用UI的某些部分,请将控件或表单的Enabled属性设置为false。使用表单的FormClosed事件将其设置回true。请注意,这通常不会提高可用性。