[英]Ms access vba sink (catch) keydown event from a formless subform
我正在开发一个访问程序,用于维护其他应用程序的测试数据。 它是通用程序,不适用于特定应用程序。 假定测试数据存储在数据库表中。 因为我的程序事先不知道哪些表是要声明的应用程序的一部分,所以它从应用程序数据库中读取元数据,并为每个表创建链接表。 为了输入和维护数据,我有一个带有子窗体控件的窗体。 此子窗体控件没有预定义的源对象。 通过将源对象属性设置为“ table。[linkedtablename]”,可以将子窗体用于数据输入。 当用户从列表中选择另一个应用程序表时,该另一个表将分配给子表单。 这个效果很好。 现在,我需要处理此子窗体中的事件。 因为子窗体源对象不是窗体,所以这不是很明显。 没有参数时,捕获子窗体的事件是没有问题的。 您可以编写以下代码:
Me.subformname.form.oncurrent = "=customoncurrent()"
但是如何捕捉按键事件呢? 带有2个参数(键代码,shift)引发此事件。
我不能写:
Me.subformname.form.onkeydown = "=customkeydown()"
在运行时,VBA会引发错误,说明事件过程声明中缺少参数。
我试图使用'withevents'子句,但没有成功。 也许我对该条款的可能性了解得很少。
这个问题可以解决吗?
标记
您这里有一个很好的,简约的解决方案。 但是,由于您添加了捕获子表单事件的要求,因此它变得太简单了!
您可以采取几种方法,但我建议这样做:
这可能比其他方法要少。
顺便说一句,不要在表单类模块中使用WithEvents。 那只是在乞求麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.