Fermer un formulaire puis en appeler un autre

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 en ajoutant le this.Close(); après form2.ShowDialog() ne fonctionne pas non plus.

Des allusions?

EDIT: Pourrait aussi append 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() place, 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. Vous devez masquer le formulaire principal ou modifier la fenêtre principale en fenêtre toujours ouverte.

Dans ce cas, vous devez fermer la fenêtre principale après la fin de ShowDialog() . Ensuite, vous devez append à la fin de cette fonction de bouton 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 seulement 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(ssortingng[] 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(); } 
 Form2 frm2 = new Form2(); frm2.ShowDialog(); 

et

 this.Close(); 

n’est pas une bonne combinaison ..

frm2 va effectivement se charger mais vous ne pouvez même pas le voir car this.Close(); fermera chaque formulaire en une milliseconde …

 this.Hide(); 

travaux…

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.

Il suffit de remplacer this.Close (); avec this.Hide (); Cela fonctionnera parfaitement!

Vous fermez le formulaire en premier, vous devez d’abord charger le deuxième formulaire.

 private void buttonStartQuiz_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.ShowDialog(); this.Close(); } 
 this.Visible = false; Form2 form2 = new Form2(); form2 .ShowDialog(); this.Close(); 
 new play().Show(); this.Dispose(); 

Essaye ça:

 btCancel.FindForm().Close(); 

btcancel est un bouton qui se trouve sur le formulaire que vous souhaitez fermer.

Mettez ceci en forme principale

 private void mainform_FormClosed(object sender, FormClosedEventArgs e) { Application.Exit(); } 

Travaillé pour moi