从单独的WPF应用程序处理WinForms按钮的Click事件

时间:2015-07-06 16:55:09

标签: c# .net wpf winforms wcf

总结:所以我有两个应用程序:一个是WinForms,另一个是WPF。我试图弄清楚如何单击WinForms应用程序中的按钮并让WPF应用程序响应该单击。

为了更详细,我正在研究现有的WinForms应用程序,添加新功能。对于其中一个功能,我需要创建一个单独的WPF应用程序,其中的InkCanvas位于WinForms应用程序之上,允许用户绘制WinForms应用程序。

我在WinForms应用程序上有3个用于控制InkCanvas的按钮:一个用于启用绘图,一个用于启用擦除,一个用于清除画布。我需要弄清楚如何在WPF应用程序中处理这3个按钮的Click事件。

我一直在研究像PRISM的EventAggregator(虽然我不知道这是否可以在不同的进程之间工作)和WCF。 WCF看起来像我应该使用的,但我没有使用它的经验,所以它很慢。我遇到过有关WCF双工服务(link)(link

的文章

所以我想我的问题是:在单独的WPF应用程序中处理WinForms按钮的Click事件的最佳方法是什么?如果已经提出这个问题或者问题是否太模糊,请提前道歉。

1 个答案:

答案 0 :(得分:1)

WinForms可以使用内置于Winforms控件库中的ElementHost控件来托管WPF元素。如果在这种情况下不起作用(因为您使用的是透明度),则可以尝试使用覆盖在应用程序顶部的新WPF窗口(请参阅Open WPF window in WindowsForm APP)。

通过这种方式,您可以连接事件处理程序和通信,而无需担心IPC方法或管理两个不同可执行文件之间的应用程序生存期。