2009-02-04 7 views
2

Je veux exécuter du code dans 'Form1' mais après que la boîte de dialogue est fermée et qu'elle n'est pas visible. Je sais que je peux le faire en dehors du dialogue après avoir appelé ShowDialog() mais je ne l'aime pas.Exécuter le code après la fermeture de la boîte de dialogue et n'est pas visible

J'ai essayé dans 'FormClosed' mais il semble que la boîte de dialogue est toujours visible lorsque cet événement est déclenché. Si j'appelle 'Hide()' la boîte de dialogue principale est minimisée - quelque chose d'intéressant se produit

+0

Qu'est-ce que c'est quelque chose d'intéressant? –

+0

la boîte de dialogue principale disparaît et réapparaît –

Répondre

3

Je créerais une méthode statique dans la boîte de dialogue, et dans cette méthode montrerais la boîte de dialogue, et exécuterais tout ce qui a besoin d'être exécuté après sa fermeture, par ex.

public static void ShowAndDoStuff() 
{ 
    MyDialog dialog = new MyDialog(); 
    dialog.ShowDialog(); 
    dialog.DoStuff(); 
} 
1

Vous pouvez essayer l'événement de clôture, aussi la méthode hide est une bonne idée. Je suggère une solution de mélange il suffit d'utiliser une variable booléenne (ie: sysclose) avec la valeur par défaut false, dans l'événement closing si sysclose est false puis annuler la fermeture et masquer le formulaire puis faites votre travail définir le sysclose à true et appeler this.close

Questions connexes