Winforms 如何在vb6中用vb2008实现Windows窗体

Winforms 如何在vb6中用vb2008实现Windows窗体,winforms,vb6,Winforms,Vb6,我在vb2008中编写了一个测试表单,以便在vb6中将其称为mdi子级: 代码如下: ` 不幸的是,这种方法不起作用,因为它是COM组件,并且会发生错误。有人知道一种经过验证的方法可以使windows.NET窗体在VB6中可用吗 提前谢谢你 斯蒂芬 将VB6放入DLL中。创建一个从VB6调用模式对话框的公共方法 从.NET程序中,引用VB6中内置的DLL(COM选项卡) 调用该方法。此时将显示VB6模式窗体 但是,有些东西可能不起作用,例如VB6代码中嵌入的某些ActiveX控件可能有问题。当

我在vb2008中编写了一个测试表单,以便在vb6中将其称为mdi子级:

代码如下: `

不幸的是,这种方法不起作用,因为它是COM组件,并且会发生错误。有人知道一种经过验证的方法可以使windows.NET窗体在VB6中可用吗

提前谢谢你

斯蒂芬
  • 将VB6放入DLL中。创建一个从VB6调用模式对话框的公共方法
  • 从.NET程序中,引用VB6中内置的DLL(COM选项卡)
  • 调用该方法。此时将显示VB6模式窗体

  • 但是,有些东西可能不起作用,例如VB6代码中嵌入的某些ActiveX控件可能有问题。

    当然不能起作用。而是通过公开一个UserControl来保持它。请看教程。
    Imports System.Runtime.InteropServices
    
    <ComClass(frmTest.ClassId, frmTest.InterfaceId, frmTest.EventsId)> _
    Public Class frmTest
        Inherits System.Windows.Forms.Form
    
    #Region "COM-GUIDs"
        Public Const ClassId As String = ""
        Public Const InterfaceId As String = ""
        Public Const EventsId As String = ""
    #End Region
    
        Public Sub New()
            MyBase.New()
    
            InitializeComponent()
    
        End Sub
    
    Public Overloads Sub Show(ByVal MDI As Object)
        Me.MdiParent = CType(MDI, System.Windows.Forms.Form)
        Me.Show
    
    End Sub
    
    
        Public Sub SomeText(ByVal Text As String)
            MsgBox(Text)
        End Sub
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            MsgBox("Test")
        End Sub
    End Class
    
    Private Sub Start_Click(Index As Integer)
       Dim f As New MyTestLibrary.frmTest
       f.Show (Me)
    
    End Sub