自己设计一个AciveX.dll工程
工程包括:form1(窗体),ClsMsg(类模块)
在ClsMsg模块中定义事件
public Event MsgIn
在form1窗体的一个过程中引发事件:raiseevent MsgIn
但是提示:事件没有定义
于是,在ClsMsg中定义公共函数:
Public FUnction MessageIN
在函数过程中引发事件:raiseevent MsgIn
再在窗体过程中调用公共函数,却不知如何调用,是否还要声明类?
工程包括:form1(窗体),ClsMsg(类模块)
在ClsMsg模块中定义事件
public Event MsgIn
在form1窗体的一个过程中引发事件:raiseevent MsgIn
但是提示:事件没有定义
于是,在ClsMsg中定义公共函数:
Public FUnction MessageIN
在函数过程中引发事件:raiseevent MsgIn
再在窗体过程中调用公共函数,却不知如何调用,是否还要声明类?
在初始化窗体时,将ClsMsg类的对象Set给窗体.
在需要触发事件时,由窗体触发类的公共函数MessageIN(可以换成友元的,即friend),在MessageIn中触发事件。
在类ClsMsg中代码如下:
Public Event MsgIn()Private Sub Class_Initialize()
Set Form1.ClsMsg = Me
Form1.Show
End SubFriend Function MessageIN()
RaiseEvent MsgIn
End Function窗体中代码如下:
Private m_ClsMsg As ClsMsgPublic Property Set ClsMsg(ByRef vNewValue As ClsMsg)
Set m_ClsMsg = vNewValue
End PropertyPrivate Sub Command1_Click()
m_ClsMsg.MessageIN
End Sub
本例是由Command按钮触发类的事件。
调用代码:
private CLsM as new CLsmsg
private withevents MsgIN as ClsMsg
private sub MsgIN_MsgIN()
msgbox "OK"
end sub
Set Test = New ClsMsg
End SubPrivate Sub Test_MsgIn()
MsgBox "我已被触发了。"
End Sub
private withevents MsgIN as ClsMsg
我并没有看到你的对象MsgIN什么时候New的。