CodeMine Ответов: 2

Как открыть новый экземпляр формы закрыв старый


Я создал две формы

1. форма form1
2. формы Form2

я сделал form1 's ismdicontainer истинным
я создал кнопку в форме 1 и в этой кнопке написал
следующие коды для открытия формы2

dim x как новая форма 2
х.метод showdialog()

В form2 я разработал калькулятор и поставил новую кнопку
в этой кнопке (новый расчет) я написал, чтобы создать новый экземпляр калькулятора
следующим образом

dim x как новая форма 2
х.метод showdialog()

он работает нормально, но не закрывает старый экземпляр.
если я делаю это более 10 или 15 раз, это показывает ошибку перегрузки.
я хочу, чтобы если я нажму на кнопку "Новый расчет", он должен закрыть старый экземпляр и запустить новый экземпляр

Что я уже пробовал:

я пробовал следовать кодам, но это не закрывает старый экземпляр

меня.рядом()
dim x как новая форма 2
х.метод showdialog()

кроме того я пробовал следующие коды все еще это не закрывает старый экземпляр


dim x как новая форма 2
х.метод showdialog()
меня.рядом()

2 Ответов

Рейтинг:
19

Dave Kreskowiak

Вы не можете делать то, что хотите. Окна открываются в иерархии, а не в цепочке.

Первая показанная форма-это вершина дерева окон. Закрытие его закрывает все ваше приложение.

Родительское окно может скрываться. Он не может закрыть себя, если есть дочерние окна.

GrandParent Window
        |
        |
  Parent Window
        |
        |
   Child Window


Если вы хотите, чтобы новое дочернее окно заменило родительское. Родительское окно не должно создавать дочернее окно. Окно бабушки и дедушки должно создать новое окно, чтобы заменить родительское окно.
       GrandParent Window
               |
     ----------+------------------
     |                           |
Parent Window          New Parent Window


О! И любая форма, которую вы показываете с помощью ShowDialog (), должна иметь Dispose (), вызванный на нее, прежде чем ее ссылка выйдет из области видимости.
Dim x As New Form2
result = x.ShowDialog()
x.Dispose()


Maciej Los

5ed!

Рейтинг:
0

Dotnet_Dotnet

вместо меня.рядом()
пробовать

Me.Hide()