Je veux fermer le formulaire actuel sur lequel je suis (MainForm), puis en ouvrir un deuxième (Formulaire).
J'ai essayé:
private void buttonStartQuiz_Click(object sender, EventArgs e)
{
this.Close();
Form2 form2 = new Form2();
form2.ShowDialog();
}
Ou l'ajout de this.Close();
après form2.ShowDialog()
ne fonctionne pas non plus.
Des allusions?
EDIT: Vous pouvez également ajouter qu’en ajoutant this.Close()
après form2.ShowDialog()
, il ne se ferme que lorsque je ferme le nouveau formulaire . Si je choisis form2.Show()
, il ferme immédiatement les deux formulaires.
Changement
this.Close();
À:
this.Hide();
Parce que vous ne pouvez pas fermer la fenêtre principale de l'application et que vous souhaitez que l'application s'exécute après celle-ci, vous devez masquer le formulaire principal ou modifier la fenêtre principale en fenêtre qui était toujours ouverte.
Dans ce cas, vous devez fermer la fenêtre principale après la fin de ShowDialog()
. Ensuite, vous devez ajouter à la fin de cette fonction bouton la fonction this.Close()
.
Votre code nouveau code est:
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();
}
Vous pouvez jouer avec ApplicationContext mais le framework .NET supporte déjà très bien ce mode de fenêtrage avec la classe WindowsFormsApplicationBase. Sa propriété ShutdownStyle est disponible pour laisser le programme s’arrêter uniquement après la fermeture de la dernière fenêtre. Faites en sorte que le code dans Program.cs ressemble à ceci:
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);
}
}
}
Cela fonctionne bien pour moi ...
private void button_Name_Click(object sender, EventArgs e)
{
form_2 Form2 = new Form2();
Form2.ShowDialog();
this.Close();
}
Il suffit de remplacer this.Close (); avec this.Hide (); Cela fonctionnera parfaitement!
Activez ou désactivez simplement le formulaire lui-même, au lieu d'essayer de le fermer.
Code le comme:
this.enabled = false;
dans l'événement de clic ou où vous le voulez.
J'espère que ça aide.
Form2 frm2 = new Form2();
frm2.ShowDialog();
et
this.Close();
n'est pas une bonne combinaison ..
frm2 va charger, mais vous ne pouvez même pas le voir car this.Close();
ferme chaque formulaire en une milliseconde ...
this.Hide();
travaux...