forms - 检测是否有模态形式显示

标签 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

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

最佳答案

试试看App.NonModalAllowed .请注意,此属性不检测从其他(当前模块除外)项目中显示的模式形式,即如果您的应用程序包含主要可执行文件和多个 ActiveX dll,则这些项目中的每一个都将具有单独的 App对象和 Forms收藏。

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

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

如果您的应用程序是单个 exe,则使用此标志可以按预期工作。

关于forms - 检测是否有模态形式显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26776618/

相关文章:

javascript - 表单未得到验证

css - 无法更改评论部分,在 Drupal 7 的 IE7 中提交按钮文本颜色样式

c# - 使ModelState持久,但不能太持久

java - 处理 Java Web 应用程序启动错误的正确方法

go - errors.Wrapf()、errors.Errorf() 和 fmt.Errorf() 之间有什么区别?

vba - 调用带有大量参数的存储过程

forms - Coffeescript 下拉值

forms - Kentico:新表单字段不会显示在实时网站上

vb6 - [Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLSetConnectAttr 失败 vb6

c# - 为什么C#画图形的速度比VB6慢