Закрытие формы, а затем вызов другой
Я хочу закрыть текущую форму, на которой я включен (MainForm), а затем открыть вторую (Form).
Я пробовал:
private void buttonStartQuiz_Click(object sender, EventArgs e)
{
this.Close();
Form2 form2 = new Form2();
form2.ShowDialog();
}
Или добавление this.Close();
после form2.ShowDialog()
также не работает.
Любые подсказки?
EDIT: также можно добавить, что добавив this.Close()
после form2.ShowDialog()
, он закрывается только при закрытии новой формы.
Если я выберу form2.Show()
, он сразу же закроет обе формы.
Ответы
Ответ 1
Изменить
this.Close();
To:
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();
}
Ответ 2
Вы можете взаимодействовать с ApplicationContext, но платформа .NET уже имеет очень хорошую поддержку этого режима окон с классом 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);
}
}
}
Ответ 3
Это отлично работает для меня...
private void button_Name_Click(object sender, EventArgs e)
{
form_2 Form2 = new Form2();
Form2.ShowDialog();
this.Close();
}
Ответ 4
Form2 frm2 = new Form2();
frm2.ShowDialog();
и
this.Close();
не является хорошей комбинацией.
frm2 фактически загрузится, но вы даже не увидите его, потому что this.Close();
закроет каждую форму всего за миллисекунду...
this.Hide();
работает...
Ответ 5
Просто включите или отключите форму, а не пытайтесь закрыть ее.
Введите код:
this.enabled = false;
в событии клика или там, где вы хотите.
Надеюсь, что это поможет.
Ответ 6
Просто замените this.Close(); с этим. Скрыть();
Он будет работать отлично!
Ответ 7
Сначала вы закрываете форму, сначала нужно загрузить вторую форму.
private void buttonStartQuiz_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.ShowDialog();
this.Close();
}
Ответ 8
Попробуйте следующее:
btCancel.FindForm().Close();
btcancel
- кнопка, которая лежит на форме, которую вы хотите закрыть.
Ответ 9
this.Visible = false;
Form2 form2 = new Form2();
form2 .ShowDialog();
this.Close();
Ответ 10
new play().Show();
this.Dispose();
Ответ 11
Поместите это в основную форму
private void mainform_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
Работал для меня.