Закрытие формы и затем называет другой

Я хочу закрыть текущую форму, я нахожусь на (MainForm) и затем открытие второго (Форма).

Я попробовал:

private void buttonStartQuiz_Click(object sender, EventArgs e)
{
    this.Close();

    Form2 form2 = new Form2();
    form2.ShowDialog();
}

Или добавление this.Close(); после form2.ShowDialog() также не работает.

Какие-либо подсказки?

Править: Могло бы также добавить это путем добавления this.Close() после form2.ShowDialog() это закрывается только, когда я закрываю новую форму. Если я выбираю form2.Show() вместо этого это сразу закрывает обе из форм.

15
задан MikeTheLiar 2 May 2014 в 20:29
поделиться

3 ответа

Изменить

this.Close();

на:

this.Hide();

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

В этом случае вы должны закрыть главное окно после завершения ShowDialog () . Затем вы должны добавить в конце этой кнопки функцию события this.Close ()

Ваш новый код:

private void buttonStartQuiz_Click(object sender, EventArgs e)
    {
        // hide main form
        this.Hide();

        // show other form
        Form2 form2 = new Form2();
        form2.ShowDialog();

        // close application
        this.Close();
    }
35
ответ дан 1 December 2019 в 01:16
поделиться

Сначала вы закрываете форму, сначала необходимо загрузить вторую форму.

private void buttonStartQuiz_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.ShowDialog();
this.Close();
}
-1
ответ дан 1 December 2019 в 01:16
поделиться

Вы можете возиться с ApplicationContext, но платформа .NET framework уже имеет очень хорошую поддержку этого оконного режима с классом WindowsFormsApplicationBase. Его свойство ShutdownStyle позволяет программе завершать работу только после закрытия последнего окна. Сделайте так, чтобы код в Program.cs выглядел следующим образом:

using System;
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices;  // Add reference to Microsoft.VisualBasic!!

namespace WindowsFormsApplication1 {
  class Program : WindowsFormsApplicationBase {
    [STAThread]
    static void Main(string[] args) {
      var app = new Program();
      app.EnableVisualStyles = true;
      app.ShutdownStyle = ShutdownMode.AfterAllFormsClose;
      app.MainForm = new Form1();
      app.Run(args);
    }
  }
}
6
ответ дан 1 December 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: