2010-07-22 6 views
2

J'ai une application Windows qui est juste une forme avec un contrôle de la minuterie. J'ai réussi à suivre cela à la situation suivante:.NET Timer Control

private void timer1_Tick(object sender, EventArgs e) 
{ 
    MessageBox.Show("Test"); 
    timer1.Enabled = false; 
} 

imprimera test encore et encore jusqu'à ce que j'arrête le programme. Cependant:

private void timer1_Tick(object sender, EventArgs e) 
    { 
     //MessageBox.Show("Test"); 
     textBox1.Text += "t"; 
     timer1.Enabled = false;    
    } 

Ajoute juste un "t" à la zone de texte.

Quelqu'un peut-il me dire pourquoi MessageBox.Show est à l'origine de la fonction pour revenir avant que la minuterie est désactivé?

Répondre

0

L'appel à blocs MessageBox.Show exécution de timer1_Tick jusqu'à la fermeture du messsagebox, donc l'appel à mettre timer1.Enabled = false; ne se produit pas avant cela. Pour cette raison, la minuterie est toujours en cours d'exécution et ainsi timer _Tick` continue à être appelé, chaque fois que le minuteur se déclenche, jusqu'à ce que vous appuyez sur OK dans l'une des boîtes de message.

Qu'est-ce que vous avez besoin, si vous voulez afficher l'messagebox pour arrêter le chronomètre de tirer à nouveau, est la suivante:

private void timer1_Tick(object sender, EventArgs e) 
{ 
    timer1.Enabled = false; 
    MessageBox.Show("Test"); 
} 
0

Vous désactivez le temporisateur après l'utilisateur a cliqué sur la boîte de message.

MessageBox.Show montre une boîte de dialogue modale. Il reviendra (à la méthode de l'appelant) après que l'utilisateur a répondu à la boîte de message. Si vous désactivez d'abord la minuterie, l'événement ne sera plus déclenché et l'utilisateur aura suffisamment de temps pour réagir.

Essayez ceci:

timer1.Enabled = false; 
    MessageBox.Show("Test"); 
0

Êtes-vous en cliquant sur OK sur le test, chaque clic de minuterie? Si les boîtes de message s'empilent les unes sur les autres, c'est que MessageBox.Show ne s'affiche pas tant que vous n'avez pas fermé la boîte de message. Pendant ce temps, une pompe à message continue à fonctionner et traite vos messages de minuterie.