Перенос приложения VB6 MDIForm в VB.Net

#vb.net #vb6-migration

#vb.net #vb6-миграция

Вопрос:

Я искал здесь решения, но они, похоже, отличаются от ситуации, с которой я сталкиваюсь. У меня есть MDIMain.frm, у меня есть его «IsMdiContainer = True». У меня есть другая форма, в которой я устанавливаю objForm1.MdiParent = MDIMain, я показываю objForm1.Показать и сохранить MDIMain. Но единственное, что появляется, это MDIMain, который полностью пуст.

Предполагается, что MDIMain должен быть полностью пустым, дизайн должен был заменить на него любую из 4 «дочерних» форм. Я запустил VB6 в VB.Инструмент сетевого преобразования из версии 2005 для «переноса» проекта с одного языка на другой. Конечно, было много проблем, но у меня запущена программа, и начальные части кода, похоже, в порядке. Именно эту проблему MDI parent / child я вижу прямо сейчас. Программа изначально открывает не основную форму MDI, а некоторые другие формы, а затем основную форму MDI с подключенным правильным дочерним элементом.

Я нашел очень простой пример MDI для родителей / дочерних элементовhttps://www.oreilly.com/library/view/programming-visual-basic/0596000936/ch04s04.html и это могло бы сработать.

В новой() ‘дочерней’ форме этот код взят из конвертера:

 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.Загрузка вызывается как побочный эффект

Col_Plus_Calib.Add(MDIMain.UC_Status)

вызов. Это то, что я вижу из стека вызовов, после установки точки останова в процедуре MDIMain_Load. Затем процедура MDIMain_Load, которую я жестко запрограммировал

     frmPlus.MdiParent = Me
    frmPlus.Show()
  

Чтобы отобразить дочернюю форму.

В одном из предложений прокомментирован порядок выполнения этих операций, так что, возможно, это проблема. но я не совсем разбираюсь в этих деталях. Так что, возможно, объекты созданы не в правильном порядке или созданы вообще?

Комментарии:

1. Без дополнительного кода было бы трудно помочь вам сузить проблему. В любом случае, в .NET в наши дни появилось довольно много нового. Я не знаю, что делает ваше приложение, но вам может оказаться проще существенно переписать его, чем пытаться автоматически преобразовать его и устранить возникающие проблемы.

2. Вы проверили Project-> Properties->Application , какова начальная форма вашего приложения? Вы также должны опубликовать код, в котором вы показываете objForm1. Показать и MDIMain (надеюсь, не в таком порядке 🙂

3. Не вкладывайте ответ в вопрос. Вместо этого опубликуйте ответ.