我有一个用于打开和操作专有图像类型的ActiveX控件。我能够在Access窗体中嵌入控件,并使用对象浏览器能够确定所有类成员。我遇到的唯一问题是处理控件引发的一些事件。
例如,从对象浏览器中我可以看到以下事件定义:
Event RightClicked()
当我将以下代码添加到表单时:
Private Sub CtrlInstanceName_RightClicked()
'Anything here
End Sub
一切都按预期工作。但是,如果事件声明传递了参数,例如:
Event MeasurementUpdated(id as Long)
添加:
Private Sub CtrlInstanceName_MeasurementUpdated(id as Long)
'Anything here
End Sub
产生以下错误:
表达式...您在生成的事件属性设置中输入 以下错误:过程声明与描述不匹配 具有相同名称的事件或程序。
在添加第二个处理程序后,更糟糕的是,表单上的所有事件处理程序会产生此错误,包括表单引发的事件和表单上的其他控件。
我已经在C#.NET应用程序中测试了ActiveX控件,并且能够处理那里的事件(尽管它们没有按预期工作)。在Visual Studio中,函数原型最终与自动定义的事件处理程序类类型有点奇怪。
关于如何更改事件过程声明以避免此错误的任何想法?
答案 0 :(得分:0)
就像大多数星期五的问题一样,我后来发现这个问题的答案相当简单。
首先,由于我不熟悉VBA代码编辑器,我不知道可以通过使用代码上方的Object组合框来为嵌入式控件创建存根。选择我的控件名后,我从过程组合框中选择了MeasurementUpdate
事件。
正确的声明只是:
Private Sub CtrlInstanceName_MeasurementUpdated(ByVal id as Long)
'Anything here
End Sub
关键区别是ByVal
修饰符。