C# 如何将计时器时间从秒转换为分钟,并显示分钟:秒?
现在它只以秒的形式倒数,如8..7..6..5..等。计时器1的间隔设置为1000毫秒 我希望,如果用户将numericupdown1更改为9,那么它会像现在一样倒数秒,将秒数计为分钟,并显示为:01(分钟):10(秒) 这是Timer1\u Tick事件的代码:C# 如何将计时器时间从秒转换为分钟,并显示分钟:秒?,c#,C#,现在它只以秒的形式倒数,如8..7..6..5..等。计时器1的间隔设置为1000毫秒 我希望,如果用户将numericupdown1更改为9,那么它会像现在一样倒数秒,将秒数计为分钟,并显示为:01(分钟):10(秒) 这是Timer1\u Tick事件的代码: private void timer1_Tick(object sender, EventArgs e) { try { numbers
private void timer1_Tick(object sender, EventArgs e)
{
try
{
numbers_radar = Convert.ToInt64(numericUpDown1.Value);
numbers_satellite = Convert.ToInt64(numericUpDown2.Value);
if (numbers_radar <= 0 || numbers_satellite <= 0)
{
timer1.Stop();
button1.Enabled = true;
numericUpDown1.Enabled = true;
numericUpDown2.Enabled = true;
MessageBox.Show("Value cannot be zero or below zero");
numericUpDown1.Text = "";
numericUpDown2.Text = "";
}
else
{
Numbers_Timer_radar = Numbers_Timer_radar + 1;
Numbers_Timer_satellite = Numbers_Timer_satellite + 1;
if (Numbers_Timer_radar >= numbers_radar)
{
try
{
filesdownload();
number_of_files_in_current_directory = Directory.GetFiles(sf, "radar*.png");
label13.Text = "Current Number Of Files In The Selected Directory Are: " + number_of_files_in_current_directory.Length;
button1.Enabled = false;
Numbers_Timer_radar = 0;
}
catch (Exception Local_Timer1_Exceptions)
{
Logger.Write("Timer1 Errors : " + Local_Timer1_Exceptions);
}
}
if (Numbers_Timer_satellite >= numbers_satellite)
{
satellite_downloads();
number_of_satellite_files_in_current_directory = Directory.GetFiles(satellite_dir, "satellite*.png");
label8.Text = "Current Number Of Files In The Selected Directory Are: " + number_of_satellite_files_in_current_directory.Length;
button1.Enabled = false;
Numbers_Timer_satellite = 0;
}
time_left_radar = numbers_radar - Numbers_Timer_radar;
time_left_satellite = numbers_satellite - Numbers_Timer_satellite;
//string t = GetTime((int)time_left_radar);
label21.Text = time_left_radar.ToString();
label22.Text = time_left_satellite.ToString();
label1.Text = "Next image radar will be download in: ";
label5.Text = "Next image satellite will be download in: ";
}
}
catch (Exception General_Exceptions)
{
Logger.Write("Show if numbers have wrong string input" + numbers_radar);
Logger.Write("Show if numbers have wrong string input" + numbers_satellite);
timer1.Stop();
Logger.Write("Exception: " + General_Exceptions + Environment.NewLine);
//numericUpDown1.Clear();
//numericUpDown2.Clear();
button1.Enabled = true;
numericUpDown1.Enabled = true;
numericUpDown2.Enabled = true;
Numbers_Timer_radar = 0;
Numbers_Timer_satellite = 0;
}
}
感谢您的帮助。尝试使用
TimeSpan
对象-它们非常棒,您可以调用myTimeSpan.Minutes等,以方便访问(无需手动计算)。Henk我所说的“it didnt work”是指我不知道在timer\u tick事件中正确地执行和使用GetTime。我试过了,但我得到的最好结果是:00:00:08,最后一个08以秒计,比如:08..07..06..05等等,分钟数从未更新过。我想看到的是:00:01:08。。。00:01:07... 等等
public string GetTime(int Time)
{
//Seconds
Sec = Time % 60;
//Minutes
Min = ((Time - Sec) / 60) % 60;
//Hours
Hrs = ((Time - (Sec + (Min * 60))) / 3600) % 60;
return Hrs.ToString("00") + ":" +
Min.ToString("00") + ":" +
Sec.ToString("00");
}