是否有一些方法可以检测我的 VB6 应用程序中是否显示了模态表单。
如果有模态表单显示,我想以模态方式显示另一个表单,如果没有显示模态表单,我想显示无模态。
我知道我可以做一些错误处理来检测这一点,并在发生错误时以模态方式显示:
Public Sub ShowFormModeless(frm As Form, Optional ownerForm As Form = Nothing)
On Error GoTo ShowModal
Call frm.Show(, ownerForm)
Exit Sub
ShowModal:
Call frm.Show(vbModal, ownerForm)
End Sub
但我希望能够在不引发错误的情况下检测到这一点。
最佳答案
试试看App.NonModalAllowed
.请注意,此属性不检测从其他(当前模块除外)项目中显示的模式形式,即如果您的应用程序包含主要可执行文件和多个 ActiveX dll,则这些项目中的每一个都将具有单独的 App
对象和 Forms
收藏。
结果是,如果一个 dll 仅显示其自己项目的 App.NonModalAllowed
模式形式,被标记。所以再一次,App.NonModalAllowed
不是流程范围的标志,而是每个项目的标志。
请注意,此标志仅跟踪 VB6 表单,因此如果您使用 API 对话框(打开/保存文件、颜色选择器等),这不会进入 VB6 运行时的模态循环,因此没有任何标志。
如果您的应用程序是单个 exe,则使用此标志可以按预期工作。
关于forms - 检测是否有模态形式显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26776618/