是否可以直接在 VB6 窗体上使用 Windows 窗体控件?

Dav*_*Caz 5 vb6 winforms-interop winforms

是否可以直接在 VB6 窗体中使用 .NET Windows 窗体控件?

这里的目标是在旧版 VB6 应用程序中使用更新的 .NET 控件。我们已经有了一个混合的 .NET / VB6 环境。

  • 我知道Microsoft InteropForms Toolkit,但它被描述为用于将自定义用户控件从 .NET 导出到 VB6。这似乎没有提供预先存在的控件(但我可能是错的)。

  • 我试图在 VB6 项目中简单地引用 System.Windows.Forms.tlb 作为组件库 - 但它不允许选择它,这似乎意味着它内部没有 ActiveX 控件。

我知道您可以轻松地执行相反的操作 - 例如,在 .NET winforms 表单上使用 VB6 用户控件。那不是我需要的。


您可以System.Windows.Forms从 VB6 以正常方式引用该程序集,并在 VBP 中得到如下行:

Reference=*\G{215D64D2-031C-33C7-96E3-61794CD1EE61}#2.4#0#C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Windows.Forms.tlb#System_Windows_Forms
Run Code Online (Sandbox Code Playgroud)

但这不提供在表单上放置控件的访问权限。

Jor*_*iro 0

我以前也这么做过。我在 .net 中创建了一个控件(使用您想要使用的表单控件)(使用 InteropFormsToolkit 导出到 tlb),并在放置该 .net 控件的位置创建了一个 vb6 控件。有必要映射我想要使用的所有属性、事件和方法。在 vb6 表单中,我添加了这个 vb6 控件,并封装了 .net。有效!

  • 谢谢@Jorge,也许这就是要走的路。我希望有一种方法可以在不编写包装器的情况下做到这一点。 (2认同)