Access 2016窗体按钮Click单击事件失效、DblClick双击事件正常问题求助
Access 2016 窗体关闭按钮单击需触发两次问题排查及解决思路
基础属性排查项
- 检查按钮单击事件绑定唯一性:确认按钮属性表「事件」选项卡中,单击事件仅绑定
btn_CloseForm_Click过程,无额外绑定的宏、表达式或其他过程 - 检查窗体脏数据状态:若窗体绑定了数据源,第一次点击可能优先触发窗体数据提交逻辑,未执行关闭代码。可优先在单击事件开头主动提交未保存修改
- 检查控件遮挡情况:确认按钮上方无透明标签、空白矩形等上层控件,避免第一次点击仅触发上层控件的获焦逻辑
- 检查按钮状态属性:确认按钮「可用」属性为是,「锁定」属性为否,排除第一次点击仅用于解锁控件的情况
代码调整方案
- 精简单击事件代码,移除冗余的
DoEvents、On Error GoTo 0语句,增加主动提交脏数据的逻辑,参考代码如下:
Private Sub btn_CloseForm_Click() ' 主动提交窗体未保存修改 If Me.Dirty Then Me.Dirty = False DoCmd.SetWarnings False ' 使用Me.Name替代硬编码窗体名,避免名称拼写错误 DoCmd.Close acForm, Me.Name, acSaveNo DoCmd.SetWarnings True End Sub
- 排查窗体全局事件冲突:检查窗体的
MouseDown、MouseUp、GotFocus事件是否有自定义代码,上述事件优先级高于单击事件,若存在拦截逻辑会导致第一次点击失效 - 重置按钮控件:删除原有按钮,重新添加新按钮并绑定单击事件,排除原有控件属性损坏导致的异常
特殊场景排查
- 若当前窗体为模式窗体(通过
acDialog参数打开),检查父窗体是否存在抢夺焦点的代码,避免第一次点击仅用于激活当前窗体 - 临时隐藏Access导航窗格测试,部分场景下导航窗格后台刷新会抢夺窗体焦点,导致第一次点击仅激活窗体未触发控件事件
内容的提问来源于stack exchange,提问作者Shaves
相关产品推荐
相关产品推荐

