2009-12-29 3 views
0

J'ai trois minuteurs séparés qui appellent une méthode dans chacun de leur _Tick. Cette méthode fonctionne très bien, comme prévu, mais à l'intérieur il est une instruction if qui vérifie si deux valeurs sont soit < ou> qu'un numéro:Minuteurs et formulaires ne se fermant pas lorsque la méthode est appelée

if ((x < y) || (x > z)) 
{ 

} 

et dans cette déclaration, je veux arrêter ces trois fois , affichez une boîte de message et disposez du formulaire. Voici le code que je utilise:

if ((x < yArray[0]) || (x > yArray[1])) 
{ 
    frmFooBar barFoo = new frmFooBar(); 
    barFoo.tmrOne.Stop(); 
    barFoo.tmrTwo.Stop(); 
    barFoo.tmrThree.Stop(); 
    MessageBox.Show(GlobalVariables.aVariable+ " is dead."); 
    barFoo.Dispose(); 
} 

Les travaux conditionnels bien, comme lorsque l'affirmation est vraie, je vais un MessageBox pop-up chaque tic-tac. Le problème que j'ai est qu'aucune de ces fonctions de formulaire ne fonctionne. tmrOne, deux continuent à fonctionner et le formulaire ne se ferme pas.

Je suis encore nouveau sur C# alors peut-être mon problème est évident, mais toute aide serait géniale! Je vous remercie.

Répondre

3

Vous faites cela dans votre méthode:

frmFooBar barFoo = new frmFooBar(); 
barFoo.tmrOne.Stop(); 
barFoo.tmrTwo.Stop(); 

Cela crée une nouvelle instance de frmFooBar, et n'a pas d'effet sur l'instance qui est déjà en cours d'exécution.

Si cela se produit dans le cas de tic-tac d'une minuterie sur votre formulaire, vous aurez envie d'utiliser « ce », puisque ce sera la forme en cours d'exécution:

this.tmrOne.Stop(); 
this.tmrTwo.Stop(); 

De cette façon, vous Ré arrêter les minuteurs sur le formulaire en cours d'exécution.

+0

Cela prend tout son sens et fonctionne! Je vous remercie! – BlindMatoya

0

Pour fermer le formulaire, vous devez utiliser form.Close(); vous pouvez utiliser this.Fermer(); Si vous voulez fermer le formulaire, vous êtes. Pour arrêter le minuteur, utilisez Timer.Enabled = false; J'espère que cela aidera Amit

+0

oh, il est possible que vous utilisiez des verbes globaux? parce que vous devez passer le formulaire avec les minuteurs au formulaire que vous appelez cette méthode à partir de – Mazki516

+0

sinon, appelez directement aux minuteurs et la méthode close sans le 'FormName' .Timer.Stop() – Mazki516

Questions connexes