【问题标题】:Set focus back to the active form correctly将焦点正确设置回活动表单
【发布时间】:2011-03-29 10:03:05
【问题描述】:

我有一个带有重叠选项卡的访问应用程序,并且主页表单/总机在应用程序打开期间保持“打开”状态。我相信这是正确的方法。

考虑到这一点,我使用以下代码发送“您确定消息吗?”如果用户在不使用显示的正确控件的情况下尝试关闭数据库。

Private Sub Form_Unload(Cancel As Integer)
   If Me.chkCloseDB = False Then
       If MsgBox("Are you sure you want to close the database", vbYesNo, dbNameOf) <>                    vbYes Then _  
        Cancel = True
   End If
End Sub

如果用户按下“关闭数据库”按钮,Me.chkCloseDB 将设置为 true。

我遇到的问题是,如果用户已经导航到另一个表单,那么基本上就是坐在交换机顶部并获得焦点,如果用户尝试关闭数据库并取消我不知道如何操作的操作让焦点回到活动表单。

似乎曾经/处于活动状态的表单位于顶部,但无法访问并且无法使用所有控件。 就好像我看到的在桩底的总机有焦点,即使你看不到它。

所以我要问的问题是如何重新激活或将焦点设置到堆栈顶部的表单。

希望这是有道理的!提前感谢任何可以启发我了解我需要在这里做什么才能完成这项工作的人。

干杯 诺尔

已解决: switchboard/home forms 属性设置为 Modal,即使它没有焦点,或者看不到,它似乎也导致了问题。将表单属性上的 Modal 设置为 No 即可解决问题。

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    下面的代码应该可以解决问题。我以前用过没有问题

    Forms!frmYourForm.SetFocus

    【讨论】:

    • 为上述内容欢呼。不过,它并不能完全解决这里的问题。表单仍然是焦点,但就好像控件被冻结并且无法使用表单一样。不管有没有上面的代码行,表单仍然是您可以看到的唯一一个,可以说是在表单堆栈的顶部。你也不需要知道表格名称。所以我使用 Screen.ActiveForm.Name 来获取活动表单名称,而 Forms(activeFrmName).SetFocus 仍然不行!我想我需要尝试以某种方式禁用总机?
    • 让我明白了问题所在!我将交换机的 Modal 属性设置为 true。谢天谢地,将其设置为 false 解决了这个问题。
    • @glinch 这将是我接下来要检查的事情!很高兴你把它分类了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多