编程语言
首页 > 编程语言> > 显示模式对话框(messageBox)冻结应用程序中的其他窗口

显示模式对话框(messageBox)冻结应用程序中的其他窗口

作者:互联网

我有一个显示在同一消息循环线程中托管的多个不同顶级窗口的应用程序.存在的目的是允许用户打开同一数据的不同视图. (在MS Outlook中,您可以右键单击另一个文件夹,然后选择“在新窗口中打开”以获得类似的行为).

我的问题是,当其中一个窗口打开一个模式对话框或消息框时,它冻结了父级的所有同级窗口.

当我打开模式对话框时,我希望它仅相对于父/所有者窗口是模式的,而不是相对于应用程序中其他顶级窗口的模式.有什么合理的方法可以做到这一点吗?我考虑过:

>用非模式对话框替换模式对话框,并在打开时禁用父窗口
>在应用程序中为每个窗口创建不同的线程

有什么建议吗?

解决方法:

这就是“模态”的意思.您必须使其成为非模态的,使用表单并通过其Show()方法显示它.要禁用UI的某些部分,请将控件或窗体的Enabled属性设置为false.使用窗体的FormClosed事件将其设置回true.请注意,这通常不会提高可用性.

标签:modal-dialog,c,winforms
来源: https://codeday.me/bug/20191102/1993826.html