Member 13904845 Ответов: 3

Как закрыть текущие открытые формы, включая ту, в которой я нахожусь, и одновременно открыть новую одним нажатием кнопки?


Я пытаюсь закрыть сразу несколько форм (включая ту, в которой я нахожусь), а затем открыть новую форму одним нажатием кнопки. Я использую это, чтобы добраться до новой формы, но это не закроет форму, в которой я нахожусь. Если я вспомню форму 1, то он закроет ее, но не закроет прямо перед тем, как откроет форму 2.

Общественного Класса Form1
Частная суб методе form1_load(отправителя как объект, а равно EventArgs) обрабатывает ключевое слово mybase.Загрузить
Конец Подводной Лодки

Private Sub NextButton_Click(sender As Object, e As EventArgs) обрабатывает NextButton.Щелчок
Формы Form2.Метод showdialog()
Меня.Рядом()
Конец Подводной Лодки
End Класса

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

Я пробовал Me.Close() и Me.Hide()

3 Ответов

Рейтинг:
14

OriginalGriff

ShowDialog - это "специальный" способ открытия формы-он открывает форму и не возвращается до тех пор, пока эта форма не будет закрыта (это называется модальным диалогом). Он предназначен для таких вещей, как диалог "сохранить файл", который заставляет пользователя дать имя файла, потому что код сохранения не может продолжаться до тех пор, пока пользователь не скажет ему, где сохранить данные!

Это не единственный способ открыть форму: существует также метод Show, который запускает процесс открытия формы и немедленно возвращает ее, чтобы ваш код мог продолжить работу.

Поэтому, если вы хотите открыть форму и закрыть существующую, вы можете сделать это очень легко:

Dim f as New Form2
f.Show()
Close()
Но... имейте в виду, что если вы закроете "исходную" форму - ту, которая запускает приложение, - то ваше приложение немедленно завершится, и все формы будут закрыты.
В зависимости от того, чего вы пытаетесь достичь с помощью этого, это может быть не то, что вы хотите сделать.


Рейтинг:
1

Bryian Tan

Вы можете попробовать этот трюк, сначала скрыть родителя, потому что .Close закроет все экземпляры,затем создаст экземпляр новой формы, покажет его, а затем закроет родительскую форму или оставит ее скрытой.

Me.Hide()
        Dim frm2 As New Form2
        frm2.ShowDialog()
        Me.Close()



Скрытие и отображение форм в C#[^]


Рейтинг:
0

CaseBody

Формы Form2.Показать
Меня.Рядом

если вы используете меня (форму, на которой вы находитесь) в качестве основной формы в настройках используйте:

Формы Form2.Показать
Меня.скрыть


Richard Deeming

Именно об этом уже говорилось в принятом решении.