2

我发现这段代码工作了几个小时:

If KeyCode = 37 Then

    Me.Text12.SetFocus

End If

然后它神秘地停止了工作。我认为这可能与处理 OnEnter 子例程有关(我将光标移动到文本字段的末尾)。

然而,编辑 OnEnter 子例程并没有帮助。我唯一做的另一件事是改变我的输入/键盘语言(能够输入引号并让它们立即出现,huzzah!)

我现在有这个代码:

On Error Resume Next

If KeyCode = 37 Then

    Me.Text12.SetFocus
    Me.Text12.SetFocus

End If

哪个有效。因此,我知道 SetFocus 的 50 多页搜索结果不起作用,这与它被隐藏、禁用、不可见、与牧师喝茶等有关,这里适用。

我也尝试过首先将焦点设置到另一个控件,并且也自由地应用了 DoEvents,但都没有帮助。

有没有人遇到过类似的事情,或者这只是一个非常奇怪的 Heisenbug?

4

1 回答 1

3

你一定有其他事情发生。在第一个处设置断点,然后观察单步执行代码 ( F8 )Me.Text12.SetFocus时会发生什么。

我怀疑您触发了另一个正在取消第一个Me.Text12.SetFocus.

另一种可能性是您的数据库已损坏。这是 Access 很容易做的事情,尤其是在对表单和/或报告进行大量编辑时。转到File-Info,然后单击Compact & Repair Database
让 Access 在您关闭它时自动执行此操作并不是一个坏主意。转到File - Options - Current Database (tab),然后选中Compact on Close

于 2013-06-12T18:08:56.227 回答