C# minuterie de ne pas cocher
j'ai un problème étrange...
J'ai été de sortir de mon esprit au cours de ces quelques heures...
la minuterie j'ai mis dans mon winform code (à partir de la barre d'outils) ne tique...
J'ai des minuteries sur un couple de formes dans mon programme, ils travaillent tous très bien... j'essaie de faire exactement la même chose il ce il ne la cochez pas...
Je le sélectionner, glisser sur un formulaire, pour l'activer, définissez l'intervalle et de gérer l'événement tick... et rien ne se passe...
j'ai même essayé de mettre de code aléatoire comme messagebox.montrer dans l'événement tick, juste pour voir si quelque chose se passe, et rien!!!
comme je l'ai dit, avoir un couple de plus de minuterie dans mon programme (sur d'autres formes, et non pas dans celui que je suis en train de mettre cette minuterie) et ils fonctionnent tous très bien...
des suggestions?
merci d'avance!
c'est le standard de visual studio code généré pour le timer... c'.timer1 = nouveau Système.De Windows.Les formulaires.Minuterie(ce.les composants); Système privé.De Windows.Les formulaires.Minuterie timer1; ce.timer1.Enabled = true; ce.timer1.Interval = 1000; ce.timer1.Tick += new System.EventHandler(this.timer1_Tick_1); private void timer1_Tick_1(object sender, EventArgs e) { MessageBox.Afficher("TIMER TIQUES"); }
Avez-vous commencer?
Vous pouvez éditer votre message original pour ajouter du code. (Parfois les commentaires cachés)
OriginalL'auteur Andrej | 2010-03-19
Vous devez vous connecter pour publier un commentaire.
J'ai constaté que si j'arrête le timer à partir d'un non-thread de l'INTERFACE utilisateur, puis commencer à nouveau, je perds l'événement crochet.
Je ne sais pas ce qu'est la "bonne" réponse, mais cela a fonctionné très bien pour moi:
Trois choses de cette approche:
1) En substituant les constructeurs, je veille à ce que la base de la minuterie est activée depuis le début.
2) Par Overrideing "Activés" je ne laisse jamais la base de la minuterie sont désactivés, mais l'interface ne change pas.
3) Par substitution de "OnTick," je me la remplacé propriété Enabled de décider si l'événement doit se déclencher ou non.
Start() et Stop() de travail par la mise en true et false à la propriété Enabled, respectivement.
BTW - ce que quelqu'un sait pourquoi l'événement est déclenché jamais (ou est déconnecté?) lorsque la minuterie est arrêtée/désactivé à partir d'un non-thread d'INTERFACE utilisateur?
C'était une réponse utile. Merci beaucoup ! 🙂
OriginalL'auteur
ne pas Système.De Windows.Les formulaires.Minuterie la minuterie de démarrage .permis... de toute façon.. j'ai juste réussi à le faire fonctionner... j'ai copié le visual studio generadted forme de code WINFORMNAME.le concepteur.cs de WINFORMNAME.cs...
je ne sais pas comment et pourquoi, mais il a travaillé...
merci à tous pour les réponses!
OriginalL'auteur
Assurez-vous de commencer par appeler timer1.Start()
Ouais, j'ai été mordu par moi-même à quelques reprises
.Enabled=true devrait être suffisant.
Ouais, il est "assez".. En fait .Start() est exactement la même chose que le paramètre est activé pour de Vrai 🙂
Si enabled = true est assez, et c'est la même chose que d'appeler .Start(), alors pourquoi n'est-il pas de travail? Le VS code généré qu'il a posté.timer1.Enabled=true;
OriginalL'auteur
Pour répondre à votre dernière question, il n'est pas autorisé à manipuler les commandes qui sont créés sur un autre thread. Vous pouvez appeler via les délégués.
OriginalL'auteur
J'ai couru dans cette avant que. J'étais l'activation de la minuterie avant que le réglage de l'intervalle. La permutation de deux lignes autour de le faire fonctionner.
OriginalL'auteur
J'ai eu le même problème que Andrej et j'ai essayé plusieurs solutions que j'ai trouvées sur le web.
J'ai eu le temps limite pour chaque forme dans mon programme (compte à rebours) et Voici Comment je l'ai Résolu :
J'ai utilisé de génie informatique de la solution. l'éteindre et de le rallumer!! :)) Je veux dire que je ne sais pas pourquoi, mais ça marche!!!!
tout d'abord j'ai supprimé tous les compteurs à zéro .cs et de la conception
ensuite, j'ai ajouté une minuterie dans chaque formulaire et de mettre l'autre nom de la minuterie et de la zone de texte et de l'écrit, du même code, un par un.
J'ai simplement utilisé de la minuterie.start() et la Minuterie.stop()
espère que cela aide
OriginalL'auteur