|
|
1
2
我很乐意使用.NET->vb 6.0 Interop Forms Toolkit 2.0 正是为了这个目的。我已经做过很多次了。走另一条路可能会很痛苦。 你的同事所关心的是非常真实的。出现的问题是,在什么时间集中控制,以及某些想法如何在幕后得到处理。一个主要的例子是在控件之间切换。 假设您有一个.NET窗体,其中包含一些.NET控件和一个VB 6 Active X。此ActiveX中也包含控件。现在,当您在.NET窗体中切换时,当您到达ActiveX时,您将 期待 在所有控件之间切换 在里面 ActiveX,但你没有!您将同时对整个ActiveX控件进行制表。这是个问题。 现在,如果您要在VB 6.0中绕过.NET,则必须在代码中处理这种行为。这个 CodeProject article 有一个很好的课程叫做ActiveXhelpers,就是这样做的。但基本上,它归结为手动处理按键事件,检查选项卡或shift+tab,以及手动对焦下一个/上一个控件。 现在,在您的情况下,您需要修改vb 6代码,使其行为像这样。在.NET中重写控件的工作量很可能会减少。我从来没有遇到过令人耳目一新的问题,但正如我所说,我只使用了.NET->VB,而不是相反的方式。不管是哪种方式,都可能会带来很多痛苦,而且您很可能会遇到其他问题,比如下沉事件以及在VB中说明设计和运行时之间的区别。 |
|
|
2
1
不幸的是,我只有半个答案。我们在.NET窗体上使用一个单独的vb6 ocx控件,它工作时不会出现任何问题。它不与该窗体上的任何其他.NET或OCX控件一起使用。它为数据库提供专门的视图。 |
|
|
3
1
在我们的软件套件中,我们混合了vb6和.NET。我们在vb.net和c应用程序中使用了许多由vb6编写的ActiveX控件。在大多数情况下,它的效果令人惊讶。 我们最大的头疼是,当vb6控件的版本更改时,我们必须在.NET项目中重新添加引用。.NET互操作库似乎绑定到控件的特定版本,如果不从项目中删除互操作并重新创建它们,则无法为新版本重新生成互操作。有点疼,但我已经找到了方法,所以我不必删除和重新创建控件的所有实例。 |