gpt4 book ai didi

c# - 如何在 C++/CLI 中将事件处理程序分配给事件?

转载 作者:太空狗 更新时间:2023-10-29 20:44:43 25 4
gpt4 key购买 nike

如何将“事件”添加到“事件”/委托(delegate)?语法是什么?在 C++/CLI 和 C# 中是否相同?

最佳答案

1:如果事件的底层委托(delegate)是自定义的,您自己定义为类成员(来自 MSDN 的示例):

delegate void Del(int, float);
ref class EventReceiver {
public:
void Handler(int i , float f) { }
};
myEventSource->MyEvent += gcnew Del(myEventReceiver, &EventReceiver::Handler);

2:如果底层委托(delegate)是一个全局处理程序并且具有 .NET 事件的标准签名(对象 + 事件参数)(来自 DPD 答案):

delegate void MyOwnEventHandler(Object^ sender, EventArgs^ e) { }  
myEventSource->MyEvent += gcnew EventHandler(MyOwnEventHandler);

3:如果底层委托(delegate)具有 .NET 事件的标准签名并且事件处理程序是类方法:

ref class EventReceiver {
public:
void Handler(Object^ sender, EventArgs^ e) { }
};
myEventSource->MyEvent += gcnew EventHandler(myEventReceiver, &EventReceiver::Handler);

4:使用 System::EventHandler 泛型(采用 MyEventArgs args 参数)作为底层委托(delegate):

ref class EventReceiver {
public:
void Handler(Object^ sender, MyEventArgs^ e) { }
};
myEventSource->MyEvent += gcnew EventHandler<MyEventArgs^>(this, &EventReceiver::DataReceived);

关于c# - 如何在 C++/CLI 中将事件处理程序分配给事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com