例如,我已将timer1.Interval
设置为5000
,我想知道在计时器滴答之前这个间隔有多少。我怎么能这样做?
答案 0 :(得分:4)
如何查看计时器时间?
你做不到。计时器类无法检查计时器因火灾而剩余的时间。您可以做的最好的事情是跟踪计时器上次触发的时间,并计算自己在下一个刻度线之前剩余的时间。
答案 1 :(得分:2)
DateTime MainTimer_last_Tick = DateTime.Now;
System.Windows.Forms.Timer timer_Calc_Remaining;
timer_Calc_Remaining.Enabled = true;
timer_Calc_Remaining.Interval = 100;
timer_Calc_Remaining.Tick += new System.EventHandler(this.timer_Calc_Remaining_Tick);
在主计时器启动或打勾时:
timer_Main.Enabled = true;
MainTimer_last_Tick = DateTime.Now;
private void timer_Calc_Remaining_Tick(object sender, EventArgs e)
{
int remaining_Milliseconds = (int)(MainTimer_last_Tick.AddMilliseconds(timer_Main.Interval).Subtract(DateTime.Now).TotalMilliseconds);
.../*
int newValue = (timer_Main.Interval -remaining_Milliseconds) ;
progressBar1.Maximum = timer_Main.Interval+1;
progressBar1.Value = newValue ;*/
}
答案 2 :(得分:1)
您可以使用间隔为1000(毫秒)的备用计时器。我不认为1ms的间隔确实是一种选择,因为这会给系统带来太大的压力,无论如何都是不可靠的。
每次这个计时器过去,你都可以查看刻度数(这总是多少1000?)并从(或使用模数)5000中减去它。
答案 3 :(得分:0)
但我不能:
那是因为在等号之前出现的不是符号,而不是相反的符号
其<=
而非=<
if (timer1.Interval <= 5000)
{
//do something
}
答案 4 :(得分:0)
您正在使用Interval,这是一个不会被更改的属性(它将始终为5000,因此检查它是否小于5000是没有意义的)。此外,如果此代码在Timer1_Tick
函数中,则效率不高。但是,我认为您需要的代码是:
if (timer1.Interval <= 5000)
{
//do something
}