有没有办法直接在WPF应用程序中运行winforms exe?

时间:2012-08-08 18:19:17

标签: wpf vb.net winforms

我有一个旧的Windows移动应用程序,老板想在Windows 7上运行。因为它是所有的.NET,应用程序运行,在Windows上运行(它是为我认为的Windows CE而制作),但它运行在小窗口。我想把它搞砸,想到的第一件事就是以某种方式将实际程序转储到WPF Viewbox中。这将是相当简单的,不会侵犯任何其他应用程序的大小。

我在周围搜索的所有内容都是关于WindowFormsHost的信息,用于将WinForms用户控件放在WPF中,但没有关于完整可执行文件的信息。有谁知道有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

Viewbox仅适用于纯WPF控件。你不能用它来扩大WinForms控件,因为WinForms控件对WPF的比例变换一无所知。

您可以尝试使用WinForms Control.DrawToBitmap方法一起破解某些内容:将WinForms控件绘制到位图,然后放大位图并将其绘制到屏幕上。 (不需要WPF;您可以在纯WinForms中执行此操作。)但DrawToBitmap具有serious limitations。如果你想让你的应用程序响应鼠标或键盘,你需要做很多工作,将鼠标和键盘事件转发到原始控件,自己跟踪焦点,等等。也许理论上可行,但几乎可以肯定不实用。

可以将.NET EXE加载到另一个.NET EXE中。 EXE就像DLL一样是程序集,您可以使用Assembly.Load加载它们,甚至可以在解决方案资源管理器中添加引用。但你不需要做任何异国情调;您可以轻松地将所有源代码编译到主机EXE中开始。

您最好的选择可能只是打开表单设计器中的每个表单,并使所有控件更大。在大型应用程序中可能需要做很多工作,但没有什么可以说你必须同时完成所有工作 - 并且它可能比任何替代方案都要少。