c#,类里面可以添加属性和方法,那可不可以添加事件呢?
1个回答
展开全部
先来看看在VB中如何使用类的事件。特别指出,这里的事件不是Windows的消息事件,而是类的自定义事件。
'在类中声明一个事件
Public Event MyEvent()
'触发一个事件
RaiseEvent MyEvent
在创建对象后如何调用这个事件呢?如下:
'声明一个事件类的对象,注意WithEvents关键字
Public WithEvents theClass As MyClass
'创建对象,不能和声明放在一条语句
Set theClass = New MyClass
'调用事件
Private Sub theClass_MyEvent()
'添加事件处理代码
End Sub
在VB中提供了类的事件机制,它在对象内部的数据改变时,可以通知用户在外部进行处理,提高了与用户的交互能力。
接下来我们看看在C++中如何实现类似的事件功能。先看类的代码:
class MyClass
{
typedef void (*pFunc)(void);
public:
void MyEvent(pFunc pEventFunc)
{
m_pMyEvent=pEventFunc;
}
void Run()
{
try
{
m_pMyEvent();
}
catch(...){}
}
private:
pFunc m_pMyEvent; // 保存事件函数的指针
};
接着看调用对象的代码,如下:
//事件函数
void EventFunc(void)
{
cout<<"raise event. "<<endl;
}
int main()
{
MyClass theClass ;
theClass.MyEvent(EventFunc);
theClass.Run();
return 0;
}
由上面代码可知,在C++中,其实就是使用回调函数来模拟类似于VB的类的事件机制。首先将一个函数的指针保存的类的私有变量中,当需要触发事件时,则通过先前保存的函数指针来调用函数即可。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询