access 的 ondblclick 属性与 html 的 ondblclick 事件完全无关;它是 access 控件(如 textbox、listbox 等)的字符串型属性,取值仅限 [event procedure]、=表达式 或宏名,不解析 javascript,由系统双击阈值触发,且仅部分控件真正支持。

Access 中的 OnDblClick 属性和 HTML 的 ondblclick 事件完全无关,不能混用;在 Access VBA 环境里写 HTML 事件名会直接报错或静默失效。
Access 的 OnDblClick 不是 HTML 事件
它只是 Access 对象(如 TextBox、ListBox、TabControl)的一个字符串型属性,用来声明「双击时执行什么」——实际值只能是以下三者之一:[Event Procedure]、=表达式 或宏名。它不解析 JavaScript,也不响应浏览器行为。
- 写成
"ondblclick=doSomething()"或"javascript:alert(1)"会被 Access 当作无效字符串忽略,不会触发任何逻辑 - 双击动作由 Windows 系统级双击时间阈值控制(通常 500ms),Access 不提供防抖/节流配置项
- 如果控件本身不支持双击(比如
Label默认禁用双击),即使设了OnDblClick也无响应
哪些 Access 控件真正支持 OnDblClick
不是所有控件都响应双击。只有明确文档中标注「支持 OnDblClick 属性」的对象才有效:
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
- ✅ 实际可用:
TextBox、ListBox、ComboBox、OptionButton、CommandButton、TabControl、Page、OptionGroup - ⚠️ 表面有但常无效:
Label和Rectangle虽有该属性,但默认Enabled = False且不可交互,设了也没用 - ❌ 完全不响应:
Image、BoundObjectFrame、WebBrowserControl(后者双击由嵌入浏览器处理,Access 层无法拦截)
怎么安全地绑定双击事件(VBA 写法)
必须先确认控件已启用、可见、未被遮挡,再用代码赋值。硬编码字符串容易出错,推荐封装判断逻辑:
With Forms("MainForm").Controls("txtSearch")
If .Enabled And .Visible Then
If .OnDblClick = "" Then
.OnDblClick = "[Event Procedure]"
End If
End If
End With
- 赋值前检查
.OnDblClick = "",避免重复覆盖已有逻辑(比如用户已在设计视图里手动绑定了宏) - 不要直接写
.OnDblClick = "MyHandler"—— 这会被当宏名,若宏不存在就静默失败 - 事件过程名必须严格匹配:控件名 +
_DblClick(如txtSearch_DblClick),大小写敏感 - 如果窗体是动态加载的(如子窗体),需确保控件已初始化完成再操作,否则抛
Object doesn't support this property or method
防误触?Access 里没原生方案
Access 没有 preventDefault()、stopPropagation() 或防抖函数。所谓“防误触”只能靠业务层规避:
- 双击前加确认弹窗:
If MsgBox("确定要双击执行?", vbQuestion + vbYesNo) = vbNo Then Exit Sub - 记录上一次操作时间戳,在事件开头判断间隔是否小于 800ms,直接
Exit Sub - 把高危操作移到单击事件中,双击仅做低风险动作(如展开详情),降低误操作代价
最易被忽略的一点:Access 的双击判定依赖系统鼠标设置。如果用户把 Windows 的双击速度调到“极快”,而你的测试环境是默认值,上线后可能大量用户点两次却只触发单击——务必在目标用户典型环境中实测。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










