2010-11-24 7 views

Répondre

9
timer.Interval=5000; 
timer.Enabled=true; 
MessageBox.Show("Should close automatically"); 

Associez l'extrait suivant avec Tick eventhandler de la minuterie:

private void timer_Tick(object sender,EventArgs evt) { 
    timer.Enabled=false; 
    SendKeys.Send("{ESC}"); // SendWait as alternative 
} 
+0

+1; Cela fonctionne comme une solution de contournement. Ma réponse était spécifique à la classe 'MessageBox' =) – BeemerGuy

+1

Il y a un certain nombre de raisons pour lesquelles cela est mauvais - d'autant plus si c'est une boîte de message qui a été ouverte en premier lieu et qui pourrait donc déjà avoir été fermée. – Murph

2

Impossible avec la classe MessageBox; vous devez créer votre propre formulaire qui imite et ajouter cette fonctionnalité vous-même.

+0

Eh bien, vous pouvez le faire avec les boîtes de message de l'API Windows. Vous n'avez plus qu'à saisir la poignée de la fenêtre des boîtes de message, puis poster un message WM_CLOSE une fois que la minuterie se déclenche. Assurez-vous que vous notez l'événement de la fermeture de la fenêtre et abandonnez le chronomètre dans cette éventualité. Vous auriez juste besoin d'un peu de P/Invoke. Mais une meilleure solution est de ne pas utiliser une boîte de dialogue selon ma réponse à cette question Q. –

+0

Je devrais probablement l'avoir formulé comme "MessageBox" n'a pas cette fonctionnalité, vous avez besoin d'une solution de contournement ". – BeemerGuy

0

Une boîte de message est la mauvaise solution. Vous avez besoin d'une fenêtre de conseil.

+0

Qu'est-ce qu'une "fenêtre de conseil"? Si son quelque chose dans les formes dans Windows est nouveau pour moi - si c'est quelque chose que vous créez alors c'est une réponse beaucoup trop mince. – Murph

+0

Il est trop mince une réponse si vous devez faire un peu de travail? Je pense aux types de messages que Windows affiche lorsque les mises à jour ont été mises à jour. Vous pourriez très facilement montrer une fenêtre sans chrome et juste la tuer après 5s, mais il doit y avoir un composant système standard. –

0

Si cela est sur une page Web, vous pouvez utiliser javascript ou jQuery pour un effet tout à fait agréable. Ceci est souvent appelé "fondu" animation. Il utilise une minuterie.

Avec cette approche, vous n'utilisez pas une véritable alerte ou MessageBox. Vous utilisez un <div> ou un autre élément HTML nommé.

Vous pouvez trouver le code here pour ce que vous faites en utilisant javascript. Si vous utilisez jQuery, recherchez fadeOut. Voici un article.

Questions connexes