Créer un compte a rebours.

Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006 - 2 mars 2006 à 13:36
Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006 - 6 mars 2006 à 11:28
Salut

Voilà j'aimerais faire un compte a rebours qui s'afficherais dans une cell de datagrid. Je possède un int représentant des milisecondes. Comment puis-je m'y prendre? je suis un peu perdu là. (le nombre en int peut aller jusque 24 jours!!)

11 réponses

cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
2 mars 2006 à 17:50
Oui sur la classe timer est faite pour ce genre de problème :

tu fais :

tontimer.Intervall = 100 ; // 100 milliseconde
tontimer.Start() ;

Ton timer est demarré et son événément Tick se déclenchera toutes les 100 millisecondes.

pour le stopper :

tontimer.Stop() ;

Ben donc dans ton evenement Tick tu incremente ton int du nombrede milliseconde que tu as mis dans intervall et tu fais :
monlabel.Text = monint.ToString() ;
monlabel.Refresh() ;

un truc comme ca quoi
1
Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006
2 mars 2006 à 13:36
en fait j'aimerais savoir si la classe timer peut m'aider, et avez vous un bon tuto?
0
Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006
3 mars 2006 à 11:56
en fait je veux qu'à la fin de ce compte a rebours, une méthode soit lancée mais après chaque seconde que dure ce compte a rebours, un affichage montre un compteur qui se décrémente
0
Muroachi Messages postés 23 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 23 mai 2007 3
3 mars 2006 à 12:10
Pour que t'as méthode soit lancée, dans l'événement tick du timer, tu test en mettant par exemple :

if (int32.parse(monlabel.text) = = valeurvoulue)
{
appelméthode(param1, param2, ...);
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006
3 mars 2006 à 12:32
oui mais alors il va me lancer ma méthode a chaque fois que je change le texte alors?

Imaginons je check un dossier, puis je veux lancer un compte a rebours de 1heure. Au bout de cette heure je recheck le dossier, mais a chaque seconde passée j'aimerais afficher: "prochain check dans:" + le compte a rebours décrémenté de 1 seconde.
0
Muroachi Messages postés 23 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 23 mai 2007 3
3 mars 2006 à 19:58
non, il ne lancera la méthode que quand la condition sera vrai. Si le compte a rebours est toujours de 1 h..travaille dans l'autre sens a savoir une variable qui contient 3600 (3600 sec = 1h ) et décrémente là, a chaque fois de 1. Tu affiche là valeur de cette variable, et une fois quel est égal à zéro du lance ta méthode de check.

Maintenant pour faire un affichage plus jolie du style il reste 59 min 55 sec, regarde du coté du datetime ^^
0
Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006
6 mars 2006 à 10:17
euuuuh comment ça marche le tick ? je ne comprend pas trop comment on le définis?
0
Muroachi Messages postés 23 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 23 mai 2007 3
6 mars 2006 à 10:27
Si tu veux plus d'informations sur le timer va voir à cette adresse :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vboritimerctltasks.asp
0
Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006
6 mars 2006 à 10:52
J'ai été voir ton site et j'ai fais un truc similaire.
Le problème est que le timer ne démare jamais!
voici le code:

*******************************************************************************
public void start()
{

isconfigured = myconfbox.retok();
Console.WriteLine("isconfigured: " + isconfigured.ToString());
if (isconfigured == true)
{
mytimer.Interval = myconfbox.rettimer();
Console.WriteLine(myconfbox.rettimer().ToString());
output_folder = myconfbox.retoutput();
if (myconfbox.retismail() == true)
{
mail_adress = myconfbox.retmail();
mail_password = myconfbox.retpasswd();

}
else
{
input_folder = myconfbox.retinput();

}
mytimer.Tick += new EventHandler(mafct);
mytimer.Start();


}
}
private void mafct(object sender,System.EventArgs e)
{
//mytimer.Enabled = true;
Console.WriteLine("fdgdfgfgfdgsfdhsdfhfsghsdfhg");

}
...
********************************************************************************

Rien ne s'affiche dans la console or je règle un intervalle de 5 secondes...
0
Muroachi Messages postés 23 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 23 mai 2007 3
6 mars 2006 à 11:12
tu as du simplement oublie de mettre un " mytimer.Enabled = true; " que tu met dans le constructeur par exemple.
0
Lucasd Messages postés 76 Date d'inscription lundi 21 février 2005 Statut Membre Dernière intervention 18 mai 2006
6 mars 2006 à 11:28
arf non j'ai trouvé, j'avais oublié de mettre un doevent = true. Maintenant j'ai un autre problème. Quand je quitte mon prog , le timer continue de tourner alors que j'effectue bien un close de celui ci!!! voiçi les changements que j'ai effectué:

*******************************************************************************
public void start()
{

isconfigured = myconfbox.retok();
Console.WriteLine("isconfigured: " + isconfigured.ToString());
if (isconfigured == true)
{
mytimer.Tick += new EventHandler(mafct);
mytimer.Interval = myconfbox.rettimer();
mytimer.Start();
while (timerstatus == true)
{
Application.DoEvents();
}
Console.WriteLine(myconfbox.rettimer().ToString());
/*output_folder = myconfbox.retoutput();
if (myconfbox.retismail() == true)
{
mail_adress = myconfbox.retmail();
mail_password = myconfbox.retpasswd();

}
else
{
input_folder = myconfbox.retinput();

}*/



}
}
private void mafct(object sender,System.EventArgs e)
{
mytimer.Enabled = true;
Console.WriteLine("fdgdfgfgfdgsfdhsdfhfsghsdfhg");

}
public void disable_timer_status()
{
timerstatus = false;

mytimer.Stop();
}

}
***************************************************************************

J'appelle bien la fonction disable_timer_status a la fin puis quand je clique sur la croix, le prog se ferme mais je ne sais pas éditer dans visual studio car il me dit que le prog est tj en cours je dois tuer le process moi même vià windows!!!
0
Rejoignez-nous