О закрытии формы во время выполнения в C # - PullRequest
1 голос
/ 03 мая 2011

У меня есть две формы с именем frmRegistration & frmMain в моем проекте в c # .

Я установил frmRegistration в качестве моей стартовой формы .
Пользователь вводит данные в форму frmRegistration и нажимает кнопку submit , чтобы зарегистрироваться.Затем я хочу закрыть frmRegistration форму и показать frmMain форму пользователю.
Я пытаюсь это сделать, используя Dispose() метод frmRegistration.Но когда я использую этот метод, удаляет все выполняемые приложения , потому что frmRegistration является формой запуска.

Я не хочу, чтобы это случилось.Кто-нибудь может решить эту проблему?

спасибо.

Ответы [ 4 ]

3 голосов
/ 03 мая 2011

Используйте Show() и Hide() методы.

    private void btnSubmit_Click(object sender, EventArgs e)
    {
      ...
      var frm = new frmMain();
      frm.Location = this.Location;
      frm.StartPosition = FormStartPosition.Manual;
      frm.Show();
      this.Hide();
    }  

ОБНОВЛЕНИЕ:
Если вы не хотите, чтобы frmRegistration в памяти, запустите вашу программу в главной форме и добавьте ее в событие Shown вашей MainForm:

    var frm = new frmRegistration();
    frm.Location = this.Location;
    frm.StartPosition = FormStartPosition.Manual;
    frm.FormClosing += delegate { this.Show(); };
    frm.Show();
    this.Hide();  

Теперь вы можете просто закрыть регистрационную форму и автоматически вернуться к главной форме.

2 голосов
/ 03 мая 2011

Попробуйте установить frmMain в качестве формы запуска и сначала скрыть ее, покажите frmRegistration, сделайте то, что вы должны сделать, и утилизируйте его.

0 голосов
/ 03 мая 2011

Как минимум есть два варианта: 1. Превратите свою форму запуска в синглтон Когда вам нужно это скрыть, вызовите метод hide

2.Если у вас есть новая форма запуска, назовите ее формой MainApp или чем-то еще, установите ее невидимой, и вы сможете делать все, что вам нравится, с другими не запускающимися формами.

0 голосов
/ 03 мая 2011

Вы также можете изменить основной класс Program.cs с помощью функции Main() для запуска frmRegistration и после положительной DialogResult или другой проверки он будет начинаться с frmMain - в качестве основной формы и цикла сообщений.

...