为此,我很乐意使用 Microsoft 的Interop Forms Toolkit 2.0从 .NET -> VB 6.0 开始。我已经做过很多次了。走另一条路可能会很痛苦。
你的同事所关心的是非常真实的。随之而来的问题是,哪个控制集中在哪个时间,以及某些想法是如何在幕后处理的。一个典型的例子是跨控件的选项卡。
假设您有一个带有一些 .NET 控件和一个 VB 6 Active X 的 .NET 表单。这个 ActiveX 中也有控件。现在,当您在 .NET 表单中使用选项卡时,当您到达 ActiveX 时,您会期望在ActiveX 中的所有控件之间进行选项卡,但您没有!您将一次在整个 ActiveX 控件上进行选项卡。这是个问题。
现在,如果您要反过来,VB 6.0 中的 .NET,您必须在代码中迎合这种行为。这篇CodeProject 文章有一个名为 ActiveXHelpers 的优秀类,它就是这样做的。但基本上它归结为手动处理 KeyPressed 事件,检查选项卡或 shift+tab,以及手动聚焦下一个/上一个控件。
现在,在您的情况下,您需要修改 VB 6 代码以使其具有这样的行为。在 .NET 中重写控件很可能会花费更少的精力。我从未遇到过令人耳目一新的问题,但就像我说的那样,我只使用了 .NET -> VB 而不是相反。无论哪种方式,都可能涉及很多痛苦,并且您很可能会遇到其他问题,例如下沉事件以及在 VB 中区分设计和运行时之间的区别。