从WPF应用程序打开VB6表单

从WPF应用程序打开VB6表单,wpf,vb6,Wpf,Vb6,我们目前正在将一个旧的VB6应用程序移植到WPF。第一阶段的计划是移植几个关键表单,而不是全部应用程序。有人提出,我们可以尝试从WPF应用程序中打开一些旧的VB6表单(作为模式表单),从而提供比第一阶段更强大的功能 首先,我要问你们的朋友们,这是一种令人憎恶的行为:)甚至可能吗?是否可以从WPF应用程序打开VB6表单 谢谢, 沙哈夫。是的,这是可能的;取决于你愿意付出多大的努力。支持的关键场景如下(注意:还有其他支持的场景,但这些都是关键的场景): WPF->WinForms WinForms-

我们目前正在将一个旧的VB6应用程序移植到WPF。第一阶段的计划是移植几个关键表单,而不是全部应用程序。有人提出,我们可以尝试从WPF应用程序中打开一些旧的VB6表单(作为模式表单),从而提供比第一阶段更强大的功能

首先,我要问你们的朋友们,这是一种令人憎恶的行为:)甚至可能吗?是否可以从WPF应用程序打开VB6表单

谢谢,
沙哈夫。

是的,这是可能的;取决于你愿意付出多大的努力。支持的关键场景如下(注意:还有其他支持的场景,但这些都是关键的场景):

  • WPF->WinForms
  • WinForms->WPF
  • 如果使用VB6,您的对象都是COM对象,则可以通过WinForms在WPF中托管它们。这是MSDN上我建议您开始的位置:

    还有几本关于WPF的好书介绍了与WPF的互操作(两个方向),按此主题的优先顺序排列:

    • 释放WPF(亚当·内森)
    • 编程WPF(Chris Sells和Ian Griffiths)

    我希望这会有所帮助。

    您需要做的是将表单打包到ActiveX DLL中,并公开可以设置初始值、打开表单以及返回它们修改的任何值的类

    例如,在我自己的CAD/CAM应用程序中,我们有表单,然后是一个不包含修改模型的命令对象(实现命令设计模式的类)的层,模型都是用VB6编写的

    某些命令调用VB6窗体的对话框。有些是简单的,有些是复杂的。我们转换项目的第一阶段是剥离顶层表单层,并用.NET等价物替换它。新的.NET表单引用了包含命令对象的活动DLL

    它工作得很好。NET外观与VB6窗体的外观之间存在一些视觉上的差异,但命令对话框的运行方式与VB6可执行文件下的运行方式不同


    需要注意的一点是,如果在此过程中继续修改原始ActiveX DLL,那么构建.NET程序会有点麻烦。与VB6不同,.NET在更新对引用的ActiveX库的较新版本的引用时不是自动的。解决方案很简单,删除原始引用,然后添加新引用

    您的.NET表单是WPF还是WinForms?