2010-12-06 8 views
9

Je développe actuellement une application en C# où j'affiche un MessageBox. Comment puis-je fermer automatiquement la boîte de message après quelques secondes?Fermer automatiquement la boîte aux lettres en C#

+0

utiliser une minuterie ..... –

+6

En effet - une minuterie - et votre propre dialogue personnalisée plutôt qu'une MessageBox, sinon vous devrez commencer à jongler avec l'envoi d'événements à le MessageBox afin de le fermer, j'imagine. –

Répondre

9

Vous devrez créer votre propre fenêtre, avec le code-behind contenant un gestionnaire chargé et un gestionnaire de minuterie comme suit:

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    Timer t = new Timer(); 
    t.Interval = 3000; 
    t.Elapsed += new ElapsedEventHandler(t_Elapsed); 
    t.Start(); 
} 

void t_Elapsed(object sender, ElapsedEventArgs e) 
{ 
    this.Dispatcher.Invoke(new Action(()=> 
    { 
     this.Close(); 
    }),null); 
} 

Vous pouvez alors faire votre boîte de message personnalisé apparaît en appelant ShowDialog() :

MyWindow w = new MyWindow(); 
w.ShowDialog(); 
3

procédé System.Windows.MessageBox.Show() a une surcharge qui prend une fenêtre propriétaire en tant que premier paramètre. Si nous créons une fenêtre de propriétaire invisible que nous fermons après un certain temps, la boîte de message de l'enfant se ferme également.

Voici la réponse complète: https://stackoverflow.com/a/20098381/2190520

Questions connexes