c#,类里面可以添加属性和方法,那可不可以添加事件呢?

 我来答
吉祥二进制
高粉答主

推荐于2016-08-15 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84565

向TA提问 私信TA
展开全部

先来看看在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的类的事件机制。首先将一个函数的指针保存的类的私有变量中,当需要触发事件时,则通过先前保存的函数指针来调用函数即可。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式