将VB6 MDIForm应用程序移植到VB.Net

问题描述

我一直在这里寻找解决方案,但是它们似乎与我遇到的情况有所不同。 我有一个MDIMain.frm,我有它的“ IsMdiContainer = True”。我有另一种形式,其中设置objForm1.MdiParent = MDIMain,显示objForm1.Show和MDIMain。但是唯一出现的是MDIMain,它完全是空的。

MDIMain应该完全是空的,其设计是要交换4种“子”形式中的任何一种。 我从VS.2005运行了VB6到VB.Net转换工具,以将项目从一种语言“移植”到另一种语言。当然有很多问题,但是我正在运行程序,代码的初始部分似乎还可以。我现在看到的只是这个MDI父/子问题。该程序最初不会打开主要的MDI表单,而是先打开其他一些表单,然后再打开具有正确的子级的主要MDI表单。

我找到了一个非常简单的MDI父/子示例https://www.oreilly.com/library/view/programming-visual-basic/0596000936/ch04s04.html,可以使之工作。

在“子级”形式的New()中,此代码来自转换器:

Public Sub New()
    MyBase.New()
    'This call is required by the Windows Form Designer.
    InitializeComponent()
    'This form is an MDI child.
    'This code simulates the VB6 
    ' functionality of automatically
    ' loading and showing an MDI
    ' child's parent.
    Me.MDIParent = UniProg.MDIMain
    UniProg.MDIMain.Show
    Form_Initialize_renamed()
End Sub

哪种看起来还可以,将孩子的父母设置为项目的MDI表单。然后显示MDI表单。这里没有看到,但是MDIMain.Load被称为a

的副作用

Col_Plus_Calib.Add(MDIMain.UC_Status)

打电话。这是我在MDIMain_Load例程中放置断点后从Call堆栈中看到的内容。然后我对MDIMain_Load例程进行了硬编码

    frmPlus.MdiParent = Me
    frmPlus.Show()

显示子窗体。

其中一项建议评论了这些操作的顺序,因此可能就是问题所在。但我对这些细节感到困惑。那么也许对象的创建顺序不正确或根本没有创建?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)