1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| private void button9_Click(object sender, EventArgs e)
{
label18.Text = "";
label19.Text = "";
label20.Text = "";
label21.Text = "";
label22.Hide();
Regex myRegex = new Regex("^([0-9]{2}:[0-9]{2}|[0-9]{2}:[0-9]{2}:[0-9]{2})$");
DateTime datechoisieform1 = monthCalendar1.SelectionRange.Start;
DateTime heurechoisieform1;
bool isv = DateTime.TryParse(textBox3.Text, out heurechoisieform1);
if (isv && myRegex.IsMatch(textBox3.Text))
{
textBox3.Text = heurechoisieform1.ToString("HH:mm:ss");
dhchoisies = new DateTime(datechoisieform1.Year, datechoisieform1.Month, datechoisieform1.Day, heurechoisieform1.Hour, heurechoisieform1.Minute, heurechoisieform1.Second);
TimeSpan diff = dhchoisies.Subtract(DateTime.Now);
if (diff.TotalSeconds > 0)
{
if (!backgroundWorker1.IsBusy) backgroundWorker1.RunWorkerAsync(dhchoisies);
else
{
restartbgw = true;
backgroundWorker1.CancelAsync();
}
}
else
{
textBox3.Text = "";
MessageBox.Show("Le couple \"date-heure\" que vous avez choisi est antérieur aux date et heure actuelles", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
else
{
textBox3.Text = "";
MessageBox.Show("Heure non-valide ! Veuillez recommencer...", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
DateTime dhch = (DateTime)e.Argument;
TimeSpan dif = dhch.Subtract(DateTime.Now);
int tpstotal = (int)dif.TotalSeconds;
while (!backgroundWorker1.CancellationPending && dif.TotalMilliseconds > 0)
{
dif = dhch.Subtract(DateTime.Now);
backgroundWorker1.ReportProgress(((tpstotal - ((int)dif.TotalSeconds)) / tpstotal) * 100, dif);
Thread.Sleep(1000);
}
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
TimeSpan ts = (TimeSpan)e.UserState;
label18.Text = ts.Days.ToString();
label19.Text = ts.Hours.ToString();
label20.Text = ts.Minutes.ToString();
label21.Text = ts.Seconds.ToString();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (!e.Cancelled) label22.Show();
if (restartbgw == true)
{
restartbgw = false;
backgroundWorker1.RunWorkerAsync(dhchoisies);
}
} |
Partager