我有numericUpDown1,当我设置它的值时,它将值保存在选项文本文件中:
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
Options_DB.Set_Radar_Images_Time(numericUpDown1.Value);
}
在form1设计器中将timer1间隔设置为1000ms。
在timer1 tick事件中我有:
private void timer1_Tick(object sender, EventArgs e)
{
numbers_radar = Convert.ToInt64(numericUpDown1.Value);
}
现在我想将timer tick事件分配给:label21.Text并显示倒计时的分钟数。 如果我将numericUpDown1设置为10,那么它将倒计时10分钟。
格式应该是:分钟:秒(00:00)。
每次定时器变为1时,都应调用此方法:fileDownloadRadar(); 每当它到达1时,定时器应重置为numericUpDown1值,并重新开始重新计数,每次最后调用方法fileDownloadRadar();
numericUpDown1设置为最小值5和最大值60
修改
现在我尝试了这段代码但是在启动计时器时我没有看到label21上的任何变化。 分钟从0开始,但在这种情况下应该是29(numericUpDown1的值)。
我应该检查分钟数和秒数== 1或== 0吗?什么更多逻辑1或0?
private void timer1_Tick(object sender, EventArgs e)
{
numOfMinutes = Convert.ToInt32(numericUpDown1.Value);
int seconds = numOfMinutes % 60;
int minutes = numOfMinutes / 60;
seconds --;
string time = minutes + ":" + seconds;
label21.Text = time;
if (seconds == 1)
{
minutes --;
}
if (minutes == 1 && seconds == 1)
{
numOfMinutes = Convert.ToInt32(numericUpDown1.Value);
fileDownloadRadar();
}
}
答案 0 :(得分:1)
我认为你可以更好地使用TimeSpan对象并按如下方式开始。
在对象中声明一个TimeSpan变量(因此是私有字段):
private TimeSpan span;
在启动计时器的代码下方,初始化span变量:
timer1.Start(); // this should exist somewhere
TimeSpan span = new TimeSpan(0, numericUpDown1.Value, 0);
在您的计时器事件处理程序中,编写以下代码:
private void timer1_Tick(object sender, EventArgs e)
{
span = span.Subtract(new TimeSpan(0, 0, 1));
label21.Text = span.ToString(@"mm\:ss");
if (span.TotalSeconds < 1)
{
span = new TimeSpan(0, numericUpDown1.Value, 0);
fileDownloadRadar();
}
}
我不确定if语句中你想要什么,但我希望这会对你有所帮助。