【问题标题】:Capture windows forms events(c#) hosted on mfc dialog捕获托管在 mfc 对话框上的 windows 窗体事件(c#)
【发布时间】:2013-11-14 09:26:55
【问题描述】:
如何获取托管在 MFC 对话框上的窗口窗体事件?
我有一个托管在 MFC 对话框上的用户控件。我在该用户控件中有一个按钮。我想在 mfc 对话框中处理该按钮的单击事件。
因此我尝试按照 MSDN 中的说明实现它。
How to: Sink Windows Forms Events from Native C++ Classes
在支持 CLR 的项目中严格遵循 MSDN 中描述的步骤。
它编译并运行良好。
但是托管了 c# 控件的 mfc 不会接收到事件。
我的问题是
- 还有什么要检查的以获取事件接收器吗?
- 如果在托管端处理事件会发生什么情况,控件是否会返回到宿主应用程序?
【问题讨论】:
标签:
c#
clr
winforms-interop
【解决方案1】:
我发现了问题,因此回答了我自己的问题。
-
还有什么要检查的以获取事件接收器吗?
按照 MSDN 进行是正确的。这里的问题是错误地附加了 Click 事件。
即)
m_MyControl.GetControl()->button1->点击 += MAKE_DELEGATE(
System::EventHandler, OnClick );
我的订阅是为了控制自己。
m_MyControl.GetControl()->点击 += MAKE_DELEGATE(
System::EventHandler, OnClick );
- 如果在托管端处理事件会发生什么情况,控件是否会返回到宿主应用程序?
即。如果在托管端和主机端都处理单击事件。
嗯,首先托管方接收事件,然后主机方接收它。