我们目前正致力于将旧的VB6应用程序移植到WPF。第一阶段的计划是移植几个关键形式而不是所有应用程序。我们可以尝试在WPF应用程序中打开一些旧的VB6表单(作为模态表单),从而提供比第一阶段更强大的功能。
首先,我对你们朋友的问题就是这种憎恶:)甚至可能吗?可以从WPF应用程序打开VB6表单吗?
谢谢, Shahaf。
答案 0 :(得分:0)
是的,这是可能的;取决于你愿意工作的努力程度。支持的关键方案如下(注意:还有其他支持的方案,但这些是键方案):
鉴于使用VB6,您的对象都是COM对象,您可以通过WinForms在WPF中托管它们。这是MSDN上的位置,我建议你开始:
在WPF上还有一些非常好的书籍,涵盖与WPF(两个方向)的互操作,按此优先顺序排列:
我希望这会有所帮助。
答案 1 :(得分:0)
您需要做的是将表单打包到ActiveX DLL中并公开可以设置初始值,调出表单并返回他们修改的值的类。
例如,在我自己的CAD / CAM应用程序中,我们有Forms,然后是一个层,它不包含修改模型的命令对象(实现命令设计模式的类),以及所有用VB6编写的模型。
某些命令调用VB6 Forms的对话框。有些很简单,有些很复杂。我们的转换项目的第一阶段是撕掉顶层表单层并用.NET等价物替换它。新的.NET表单引用了包含命令对象的活动DLL。
工作得很好。 .NET外观和VB6表单外观之间存在一些视觉差异,但除了命令对话框之外,它们就像在VB6可执行文件下一样运行。
需要注意的一点是,如果在此过程中继续修改原始ActiveX DLL,那么构建.NET程序会变得有点痛苦。与VB6不同,当涉及对引用的ActiveX库的较新版本的更新引用时,.NET不是自动的。解决方案很简单,您删除原始引用,然后添加新引用。