MS Access 2016:CTRL+A 保存表单?

Posted

技术标签:

【中文标题】MS Access 2016:CTRL+A 保存表单?【英文标题】:MS Access 2016: CTRL+A saves the form? 【发布时间】:2019-03-18 22:42:33 【问题描述】:

我有一个奇怪的问题,我不知道如何追踪。 我有一个使用_AfterUpdate 事件自行关闭的表单。我偶然发现,当我在 TextBox 控件中并尝试使用 CTRL+A 选择所有文本时,表单会更新。这会导致 _AfterUpdate 运行并关闭窗体。效果是按下CTRL+A 现在是“保存并退出”而不是“选择所有文本”,正如预期的那样。

我已经挖掘了我所有的事件,它们都没有像 CTRL 或 A 这样的键。我只有一个名为“提交”的按钮,它是默认按钮。我还没有找到任何其他导致这种行为的组合键。

有人知道在 TextBox 中按 CTRL+A 会更新表单的任何原因吗?

奖励积分:有人知道我如何追踪正在发生的事情吗?如何打破动作以查看捕获此关键组合的内容?我该如何解决这个问题?

当前解决方法: 我现在使用提交按钮按下标志和_BeforeUpdate 事件来确定是否按下了 Sumbit 按钮,因此如果未按下按钮,我可以取消更新。这种变通方法的副作用是现在按下CTRL+A 什么都不做。它不会全选,但至少它也不会提交表单。现在我对CTRL+A 的去向感到双重困惑。

【问题讨论】:

【参考方案1】:

MS-Access 文本框对 Ctrl+A 没有反应。要选择文本框中的所有文本,请单击其关联的标签,或按 TAB 键进入。

Ctrl+A 始终选择所有记录(以连续形式或数据表)或当前记录(以单个形式)。这会自动保存当前记录,调用AfterUpdate


编辑:关于在文本框中模拟 Ctrl+A 的一些想法:

设置Form.KeyPreview = True

Form_KeyDown中捕获Ctrl+A

使用Screen.ActiveControl确定主动控制

如果是文本框,请使用SelStartSelLength 选择其内容。

【讨论】:

圣洁睾丸星期二!我一直在追赶我对界面的完全误解。多么可耻。这是不幸的。也许问题应该是“如何使用 CTRL+A 在文本框中全选”。 :D 我想你可以用KeyDown 事件捕获它,然后使用SelStartSelLength 谢谢。如果必须,我会这样做,但对每个控件都这样做会很痛苦......也许我可以为每个文本框控件编写事件创建脚本...... 可能在表单级别(并使用公共功能,以便您可以重复使用它们),请参阅编辑。 哦,我刚刚重新发明了***.com/a/47737371/3820271 ...

以上是关于MS Access 2016:CTRL+A 保存表单?的主要内容,如果未能解决你的问题,请参考以下文章

将 DataTable 保存到 MS Access 表

在 Access 2013 中禁用文件自动保存

MS Access 2016 - 比较同一表中的日期

MS Access SQL 组合多个表

如何在 MS Access 2013 中创建只读表?

将 XML 审计数据存储到文件系统或 MS Access 表?