2010-04-19 6 views
4

Peut-être que cela a quelque chose à voir avec le MainForm, mais je vais poser la question. J'ai ma mainForm qui est le premier à charger lorsque le programme est démarré. Je clique ensuite sur un bouton appelé Ajouter, qui devrait ouvrir un nouveau formulaire, et ferme le formulaire principal.ne montre pas

Le problème est, est montre la nouvelle forme pour une fraction de seconde, puis ferme les deux.

Le code:

private void addFrmBtn_Click(object sender, EventArgs e) 
    { 
     saveForm saveform = new saveForm(); 
     saveform.Show(); 
     this.Close(); 
    } 

Répondre

5

Dans votre méthode Program.Main(), vous avez probablement quelque chose comme ceci:

class Program 
{ 
    void Main() 
    { 
     Application.Run(new MainForm()); 
    } 
} 

Cela signifie la boucle de message de votre application est en cours d'exécution autour de la forme principale. Une fois cette fermeture terminée, le thread d'interface utilisateur principal de l'application va avec.

Vous pouvez:

Voilà comment vous faites l'option 3:

private void addFrmBtn_Click(object sender, EventArgs e) 
{ 
    saveForm saveform = new saveForm(); 
    saveform.Show(); 
    this.Hide(); 
} 
1

Le problème semble, est que vous fermez le formulaire parent qui a ouvert le formulaire enfant. Pour conserver le formulaire, utilisez this.Hide(); au lieu de fermer.

1

J'imagine que lorsque le formulaire principal est fermé, il met fin à votre application. Modifiez votre code à ceci:

private void addFrmBtn_Click(object sender, EventArgs e) 
    { 
     saveForm saveform = new saveForm(); 
     saveform.Show(); 
     this.Hide(); 
    } 
0

dans les propriétés du projet, le mode d'arrêt, go select "La dernière fois que le formulaire ferme"

Désolé, cette option semble que le travail en projet de Visual Basic

+0

Je suis allé à des propriétés, dont une partie est sous ce? – sark9012

+0

ha l'oublier, cette option semble fonctionner seulement sous le projet visuel de base – Fredou

0

Je suppose que vous affichez le formulaire principal avec:

Application.Run (nouveau MainForm());

Ceci est le code par défaut généré par Visual Studio et il a peut-être un comportement inattendu:

This method adds an event handler to the mainForm parameter 
for the Closed event. The event handler calls ExitThread to 
clean up the application. 

http://msdn.microsoft.com/en-us/library/ms157902.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.application.run.aspx

Soit ne passent pas la forme à Application.Run() ou utilisez .Hide() au lieu de .Close().