Я хочу закрыть текущую форму, я нахожусь на (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()
вместо этого это сразу закрывает обе из форм.
Изменить
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();
}
Сначала вы закрываете форму, сначала необходимо загрузить вторую форму.
private void buttonStartQuiz_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.ShowDialog();
this.Close();
}
Вы можете возиться с 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);
}
}
}