我需要在单击按钮时一起调用几个按钮单击事件。 我怎么写呢?我可以在这里使用多播委托概念吗?
我的情景:
我有一个名为XYZ的按钮。单击此按钮后,我必须逐个调用我为应用程序的其他按钮编写的事件处理程序。
有人可以帮我解决这个问题吗? 我浏览了这个链接:http://www.codeproject.com/Articles/1077/Delegates-in-managed-C 但它对我不起作用:(
答案 0 :(得分:0)
如果您限制使用Microsoft Visual C ++,则可以使用__event
,这与托管世界中的event
非常相似。
首先声明要将事件添加到方法__event
之前的方法:
__event void OnButtonClicked(...);
然后使用以下方法装饰包含该方法的类:
[event_source(native)]
class MyEventGenerator
{
public:
__event void OnButtonClicked(const void* pSender, const void* pArguments);
};
要举起活动,您只需调用该功能(前置__raise
关键字是可选的,但它会在代码中明确表示您正在举办活动)。请注意,您甚至可以从课外引发事件,因为这是一个简单的方法调用。
您将用于处理事件的课程必须使用以下内容进行修饰:
[event_receiver(native)]
class CMyEventReceiver
{
public:
void OnButtonClicked(const void* pSender, const void* pArguments);
};
要附加一个事件,你没有+=
的 sugar ,所以你必须在CMyEventReceiver
类中写下这样的内容:
__hook(&CMyEventGenerator::OnButtonClicked, pEventGenerator,
&CMyEventReceiver::OnButtonClicked);
请注意,要分离事件处理程序,您必须使用__unhook
关键字。