2012-05-23 1 views
0

Je suis un Form1 et lorsque je lance une boucle, j'ai besoin d'ouvrir un autre formulaire (Form2). Le problème est que lorsque j'exécute la boucle, elle affiche uniquement le formulaire 2 pour la première fois, puis le formulaire 2 est ouvert et se ferme automatiquement.Form.ShowDialog ouvert une seule fois lors de l'exécution dans une boucle

Pour sonder je l'ai écrit ce code simple, mais il ne fonctionne pas:

Form2 reg = new Form2(); 
while (true) 
{ 
    reg.ShowDialog(); 
} 

En Form2:

private void button1_Click(object sender, EventArgs e) 
{ 
    Application.Exit(); 
} 

Merci pour toute aide!

+0

Je pense que vous devriez nous dire quel effet désiré vous recherchez. Il semble que vous voulez que Form2 s'ouvre, et si vous le fermez, vous voulez qu'il s'ouvre à nouveau, FOREVER. Ce qui est vraiment un désir étrange. Vous ne pourriez jamais revenir à Form1. –

Répondre

1

Je pense que vous fermez votre Form2 en utilisant le bouton1. Ceci exécute button1_click qui ne ferme pas simplement Form2, il ferme toute l'application.

J'ai essayé votre code et si je ferme Form2 en utilisant le X dans le coin supérieur droit, il est fermé et rouvert immédiatement.

Si cela est votre problème, vous pouvez le résoudre en modifiant simplement votre méthode comme ceci:

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

Une autre solution pourrait être de définir la propriété DialogResult de votre bouton pour quelque chose de différent de la DialogResult.None par défaut. De cette façon, lorsque le bouton est cliqué, le formulaire est automatiquement fermé et la valeur de la propriété est utilisée comme résultat de votre ShowDialog().

+0

Merci Francesco, votre solution (this.Close()) fonctionne parfaitement. Cela résout mon problème. –