是否将VB.NET MDI应用程序转换为非MDI?

是否将VB.NET MDI应用程序转换为非MDI?,vb.net,mdi,Vb.net,Mdi,我从一位离职的同事那里继承了一个VB.NET项目。我在VB、.NET或VB.NET方面没有任何经验,我是一名JS开发人员,所以我完全不懂这些 我的主管希望我删除应用程序的“MDI属性”。也就是说,我们正在查看MDImain.vb,在以前的应用程序(预转换)中没有MDImain。这个项目是从VB6转换到VB.NET的,我们正在努力使事情恢复正常;supe的观点是,消除应用程序的MDI特性将有助于解决问题所以问题是:有没有一种简单的方法可以将MDI VB.NET应用程序转换为非MDI应用程序 注意:

我从一位离职的同事那里继承了一个VB.NET项目。我在VB、.NET或VB.NET方面没有任何经验,我是一名JS开发人员,所以我完全不懂这些

我的主管希望我删除应用程序的“MDI属性”。也就是说,我们正在查看MDImain.vb,在以前的应用程序(预转换)中没有MDImain。这个项目是从VB6转换到VB.NET的,我们正在努力使事情恢复正常;supe的观点是,消除应用程序的MDI特性将有助于解决问题所以问题是:有没有一种简单的方法可以将MDI VB.NET应用程序转换为非MDI应用程序

注意:我见过其他类似的帖子,有人建议只需从头重写应用程序。我完全同意,并且很愿意这样做,但是我们的经理拒绝了这个选择,因为他认为这需要太长时间


注释:原始应用程序不是MDI,可以通过运行现有的可执行文件并确认它不是MDI应用程序来确认。VS 2008中的VB6到VB.NET转换以某种方式将旧的VB6应用程序转换为MDI应用程序,而无需询问。(我跟踪了最近的一次转换尝试,发现添加MDI功能并不是我们遇到的过程的一部分。)我们正在尝试找出如何在另一次转换尝试中防止添加此MDI,或在结果中撤消它,因为我们不需要它。

您的主Mdi表单有一个名为IsMdiContainer的属性,这就是为什么它是操作系统的Mdi。改变这个。该表单应该类似于搜索
MyApplication OnCreateMainForm()
,这是应用程序“启动”的地方。查看该表单以查看其IsMdiContainer属性

另一个细节是,如果您有创建和生成新表单的代码,则必须了解从MDI到单个表单时发生变化的3种不同表单显示概念

Public Sub CodeInForm1()
    Dim frm As Form
    frm = New Form2()

    ' Code Concepts for VB Parent Child in MDI and Non MDI scenarios 
    frm.MdiParent = Me   ' MDI Concept
    frm.Owner = Me    ' No MDI but still linked 
    frm.Show(Me)  ' Anoter way to link Forms when spawning a new one (No MDI)
    frm.Show()  ' No Specific Parent Assigned 

End Sub
另一件需要注意的事情是,活动菜单概念在MDI和单独表单之间发生变化


如果您尝试这些更改,请在代码副本上执行这些更改

根据您目前所说的,您的VB6应用程序似乎有一个MDI主窗体(可能名为main.frm)。 它被用作一个“容器”,允许显示子窗体(以及菜单的某个位置)

如果已安装VB6 IDE(Visual Studio 6),则可以对此进行确认


如果是这种情况,删除“MDI ness”将改变任何转换代码的整个概念,并为您创建更多的工作。

MDI是多文档应用程序,这意味着您可以在一个应用程序实例中打开多个文档。但是您所说的非MDI是什么意思呢?正如前面提到的,该应用程序的早期版本没有MDImain.vb文件,我们不理解为什么现在存在MDImain.vb文件。所有的VB.NET应用程序都有这个文件吗?我假设VB.NET应用程序指的是Winforms应用程序。如果是这样,Winforms应用程序应该有一个主(或父)窗体,它将是应用程序的主窗体,关闭哪个应用程序也将关闭。文件名对其职责没有影响,mdimain.vb文件包含什么?它包含许多显然是由VB6转换自动生成的代码。我们一点都不了解。也许我问错了问题。我迷路了,到了我不知道该问什么的地步。在你的应用程序中找到“Main”方法,并检查用于启动应用程序的表单行可以像
应用程序一样。运行(someMainForm)
或-I查看问题更新以了解更多信息。