检测是否有模态表格显示

时间:2014-11-06 10:07:12

标签: forms error-handling vb6 modal-dialog

是否有一些方法可以检测我的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

但我希望能够在不抛出错误的情况下检测到这一点。

1 个答案:

答案 0 :(得分:1)

尝试检查App.NonModalAllowed。请注意,此属性不会检测从其他(比当前模块)项目显示的模式表单,即如果您的应用程序包含主可执行文件和几个ActiveX dll,则每个项目都将具有单独的App对象和{{1收集。

结果是,如果dll显示模态形式,则仅标记其自己的项目Forms。因此,App.NonModalAllowed再一次不是流程范围的标志,而是每个项目的标志。

请注意,此标志仅跟踪VB6表单,因此如果您使用的是API对话框(打开/保存文件,颜色选择器等),则不会进入VB6运行时的模态循环,因此不会标记任何内容。

如果您的应用程序是单个exe,那么使用此标志将按预期工作。