代码之家  ›  专栏  ›  技术社区  ›  Steverino

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

  •  0
  • Steverino  · 技术社区  · 5 年前

    我从一位离职的同事那里继承了一个VB.NET项目。我有

    我的主管希望我删除应用程序的“MDI ness”。一、 我们正在查看MDImain.vb,在以前的应用程序(预转换)中没有MDImain。这个项目是从VB6转换到VB.NET的,我们正在努力使事情重新开始;supe的意见是,消除应用程序的MDI将有助于理顺它。 所以问题是:

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

    备注:原始应用程序不是MDI,这可以通过运行现有可执行文件并确认它不是MDI应用程序来确认。VS 2008中VB6到VB.NET的转换不知何故使旧的VB6应用程序变成了MDI应用程序。(我跟踪了最近的一次转换尝试,发现添加MDI功能并不像我们遇到的那样是该过程的一部分。)我们正在尝试如何在另一次转换尝试中阻止此MDI添加,或者在结果中撤消它,因为我们不需要它。

    0 回复  |  直到 5 年前
        1
  •  1
  •   Sql Surfer    5 年前

    您的主Mdi窗体有一个名为IsMdiContainer的属性,这就是为什么它是操作系统的Mdi。改变这个。那张表格应该像这样搜索 MyApplication OnCreateMainForm() 这就是应用程序“开始”查看该窗体以查看其IsMdiContainer属性的地方。

    另一个细节是,如果您有创建和生成新表单的代码,那么您将必须了解三种不同的表单显示概念,这些概念在从MDI变为单个表单时会发生变化。

    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和单独的表单之间发生了变化。

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

        2
  •  0
  •   VB6 programming    5 年前

    它被用作“容器”以允许显示子窗体(以及菜单的某个位置)。

    如果已安装VB6 IDE(Visual Studio 6),则可以确认此操作。

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