Una minuscola applicazione ispirata da una richiesta di Stefano Pranzo, per creare un applicazione che visualizza il conto alla rovescia per la fine dell’anno.
Il risultato finale è questo, per ottenerlo creiamo una nuova applicazione Windows Forms, Rinominiamo Form1 FrmCountDown, e cambiamo le seguenti property:
- BackgroundImage –> Scegliamo una immagine cliccando sul bottone con i 3 puntini ed importiamola nelle resources di programma, quella che vedete l’ho trovata su bing digitando newyear nella ricerca immagini.
- BackgroundImageLayout –> Stretch
- FormBorderStyle –> None
- KeyPreview –> True (questa ci serve per gestire il quit).
Aggiungiamo alla form una label che chiamiamo lblCountdown e a cui diamo le seguenti proprietà:
- BackColor –> transparent
- Font Name –> Lucida Calligraphy
- Font Size –> 64
- Forecolor –> Gold
- TextAlign –> MiddleCenter
Aggiungiamo alla form un button che chiamiamo btnClose e a cui diamo le seguenti proprietà:
- UseVisualStyleBackColor –> False
- FlatStyle –> Flat
- BackColor –> transparent
- Font Name –> Lucida Calligraphy
- Forecolor –> Gold
- Text –> Close
Aggiungiamo alla form un timer che chiamiamo tmrCountdown.
Implementiamo il codice dietro alla form:
public FrmCountDown()
{
InitializeComponent();
tmrCountdown.Interval = 1000;
tmrCountdown.Enabled = false;
}
Nel costruttore settiamo l’intervallo del timer a 1 secondo (1000 millisecondi) e lo disattiviamo.
private void FrmCountDown_Load(object sender, EventArgs e)
{
tmrCountdown.Start();
}
Sull’evento Load della form attiviamo il timer.
private void btnClose_Click(object sender, EventArgs e)
{
Application.Exit();
}
Sull’evento click del bottone Close implementiamo la chiusura applicazione.
private void FrmCountDown_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
Application.Exit();
}
}
Sulla pressione del tasto Esc della tastiera facciamo lo stesso.
DateTime mDtEnd = new DateTime(2011, 01, 01, 0, 0, 0);
Creiamo una variabile a livello di form che contiene la data finale del conto alla rovescia, quindi le 00:00:00 del primo gennaio.
private void tmrCountdown_Tick(object sender, EventArgs e)
{
TimeSpan sp = mDtEnd.Subtract(DateTime.Now);
this.lblCountdown.Text = sp.TotalHours.ToString("###") + ":" +
sp.Minutes.ToString("0#") + ":" + sp.Seconds.ToString("0#");
Application.DoEvents();
}
Infine, sull’evento Tick del timer andiamo ad aggiornare la nostra label facendo una differenza fra la data attuale e la data finale e convertendo il dato in una stringa formattata. Come potete vedere abbiamo usato il metodo Subtract della classe DateTime e le property TotalHours, Minutes e Seconds del Timespan che rappresenta la differenza.
Ed il nostro countdown di fine anno è pronto.
Il codice sorgente completo lo trovate in area risorse.