2010-08-05 17 views
7

Ho visto varianti di questo su Google, ma ho una finestra con un controllo del timer, tre caselle di testo (ora, minuti, secondi) e basato su un pulsante che si fa clic, voglio contare fino a 2 ore. Quindi, dopo aver cliccato su textbox1 (ora) sarà 1, textBox2 (minuto) sarà 59, textBox3 (secondo) sarà 59 e continueranno a contare fino a quando tutti non saranno letti 0.Cronometro che esegue il conto alla rovescia in C#

Qualcuno ha del codice per condividere per quello?

Molte grazie.

+3

Che cosa hai provato? A cosa hai pensato? Sei bloccato perché non sai come farlo in C#, o perché non sai come farlo in pseudo-codice? –

risposta

3

È possibile utilizzare la classe TimeSpan. Inizializzazione fino a 2 ore. Se si avvia il timer, si ottiene il timer corrente. Quindi con un oggetto Timer aggiorna il tuo schermo ogni secondo. Ottieni semplicemente l'ora corrente. Quindi il tempo rimanente è:

TimeSpan rimanente = twoHoursTimespan - (CurrentTime - StartTime);

3

Estrarre i componenti da un TimeSpan. Registra l'ora e la data attuali non appena si fa clic sul pulsante e lo memorizza in una variabile. Quindi, ogni secondo il tuo timer dovrebbe calcolare la durata dall'ora di inizio.

IE: DateTime result = DateTime.Now.Subtract (StartingTime);

Quindi, utilizzare le parti del TimeSpan risultante per compilare i campi.

IE: int Hour = result.Hour; (o qualcosa di simile).

Addendum: non eseguire il conto alla rovescia manualmente ogni secondo, poiché è probabile che il conto alla rovescia sia inaccurato.

0

Questo tutorial spiega molto bene quello che stai cercando di ottenere.

http://www.dreamincode.net/forums/topic/57482-countdown-timer/

Ti dà la possibilità di conto alla rovescia da un dato momento, non solo 2 ore. Certo, puoi impostarlo su 2 ore se è l'unica cosa di cui hai bisogno.

+4

Ti avrei downvote per aver puntato su questo abominio, ma oggi sono di buon umore :) – Diadistis

+1

@Diadistis - di cosa stai parlando;) È un ottimo esempio di codice; anche fino ai nomi dei pulsanti predefiniti di button1, button2, ecc. –

+1

@Diadistis Ho dato un'occhiata all'articolo e ho pensato che fosse ok ... ma poi ho visto un po 'del codice e sono d'accordo! Perché stanno usando Convert.ToInt32 e rilevando l'eccezione, scusa, rilevando Exception - int.TryPrase è qui dalla versione 2.0 (personalmente non mi piace il "if (pausa! = True)" ma non so se è una cosa preferenziale) – Samuel

0

Ecco uno Cope Project article and project che è nelle vicinanze di quello che vuoi. Potrebbe persino soddisfare le tue esigenze se le tue esigenze sono flessibili.

0

Spiacente, questa potrebbe non essere la risposta esatta, ma è necessario utilizzare un intervallo di tempo per raggiungere questo obiettivo.

DateTime now = DateTime.Now; 

// get the time elapsed since we started the test 
// start date was set somewhere else before this code is called 
TimeSpan span = now - _startDate; 

// format the time left 
String timeleft = span.Hours > 0 ? String.Format("Time Left - {0}:{1:D2}:{2:D2}", span.Hours, span.Minutes, span.Seconds) : String.Format("Time Left - {0:D2}:{1:D2}", span.Minutes, span.Seconds); 
Problemi correlati