显示标签和进度条中的剩余时间 [英] Displaying remaining time in a label and progress bar

查看:56
本文介绍了显示标签和进度条中的剩余时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的功能从早上8点开始,到早上8:45结束。该功能显示我们在该时间段内的剩余时间。如何在进度条中显示进度?



这是我到目前为止:



I have a function that starts at 8am and ends at 8:45 am. That function displays the remaining time when we are in that time period. How could I display the progress in the progress bar?

Here is what I have so far:

private void timerPeriods_Tick(object sender, EventArgs e)
  {

      DateTime date_time_now = DateTime.Now;

      //Period 1 8:00 - 8:45AM
      DateTime date_time_Period1End = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 08, 45, 0);
      //Remaining time to end of period 1
      TimeSpan time_span = date_time_Period1End - date_time_now;

      //conditions
      if (date_time_Period1End > date_time_now)
      {
         //Progress bar ?

          string time = string.Format("{0:00}:{1:00}:{2:00}", time_span.Hours, time_span.Minutes, time_span.Seconds);

          lblP1CountDown.Text = "Left: "  + time;


      }
      else
      {
          lblP1CountDown.Text = "Done";

      }

推荐答案

假设你的计时器是System.Windows.Forms.Timer;



Assuming that your timer is System.Windows.Forms.Timer ;

var timerPeriods = new Timer();
timerPeriods.Interval = 1000;
timerPeriods.Tick += timerPeriods_Tick;
timerPeriods.Start();
progressBar1.Maximum = 2700; // for 45 min







void timerPeriods_Tick(object sender, EventArgs e)
{
    var curTime = DateTime.Now.TimeOfDay;
    var refTime1 = new TimeSpan(8, 0, 0);
    var refTime2 = new TimeSpan(8, 45, 0);


    if (curTime >= refTime1 && curTime <= refTime2)
    {
        var tsleft = refTime2.Subtract(curTime);
        lblP1CountDown.Text = tsleft.ToString(@"hh\:mm\:ss");
        progressBar1.Value++;

    }
    else
    {
        lblP1CountDown.Text = "Done";
        (sender as Timer).Stop();
    }
}







更通用的方法,如果你在两者之间启动计时器时间段不在refTime1之前;






More generic way, if you start timer between time period not before refTime1 ;

var timerPeriods = new Timer();
timerPeriods.Interval = 1000;
timerPeriods.Tick += timerPeriods_Tick;
timerPeriods.Start();
progressBar1.Maximum = 100;







void timerPeriods_Tick(object sender, EventArgs e)
{
    var curTime = DateTime.Now.TimeOfDay;
    var refTime1 = new TimeSpan(8, 0, 0);
    var refTime2 = new TimeSpan(8, 45, 0);


    if (curTime >= refTime1 && curTime <= refTime2)
    {
        var tsleft = refTime2.Subtract(curTime);
        lblP1CountDown.Text = tsleft.ToString(@"hh\:mm\:ss");
        progressBar1.Value = 100 - (int)( tsleft.TotalSeconds * 100 /refTime2.Subtract(refTime1).TotalSeconds);
    }
    else
    {
        lblP1CountDown.Text = "Done";
        (sender as Timer).Stop();
    }
}


这篇关于显示标签和进度条中的剩余时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆