计时器返回不需要的格式
Timer returning unwanted formatting
我创建了一个计时器,returns 减少时间:
public static void timerIdle_Tick(object sender, EventArgs e)
{
if (tempo >= 60)
{
minuto = tempo / 60;
segundo = tempo % 60;
}
else
{
minuto = 0;
segundo = tempo;
}
segundo--;
if (minuto > 0)
{
if (segundo < 0)
{
segundo = 59;
minuto--;
}
}
if (minuto == 0 && segundo == 0)
{
timerIdle.Stop();
timerIdle.Dispose();
dgView.addLinha(2, "config_Teste", "TIMER ACABOU", 0);
}
else
{
tempo = (minuto * 60) + segundo;
string temp = minuto + ":" + segundo;
lblIdle.Text = temp;
dgView.addLinha(2, "config_Teste", temp, 0);
}
}
我得到以下结果:
...
1:12
1:11
1:10
1:9
1:8
...
0:0
如果分秒只有一位,我需要加0(零):
01:12
01:11
01:10
01:09
01:08
...
00:00
PadLeft() 函数不起作用,因为我使用的是 C# 7.3 (.NET Framework 4.7.2)。
拜托,帮帮我。
所以这会将您的分钟和秒格式化为两位数
int minuto = 1;
int segundo= 1;
string temp = string.Format($"{minuto:D2}:{segundo:D2}");
输出:
01:01
您只需要在启动Timer
时设置倒计时持续时间(以秒为单位),在Tick
事件中每秒减1,直到得到0,然后停止计时器。使用TimeSpan.FromSeconds方法格式化时间字符串。
//Class variable...
int segundo = 0;
void WhereYouStartTheTimer()
{
segundo = 60; //1 Minute
timerIdle.Interval = 1000; //Fires every 1 second.
timerIdle.Start();
}
private void timerIdle_Tick(object sender, EventArgs e)
{
segundo--;
if (segundo == 0)
{
timerIdle.Stop();
dgView.addLinha(2, "config_Teste", "TIMER ACABOU", 0);
}
else
dgView.addLinha(2, "config_Teste", TimeSpan.FromSeconds(segundo).ToString(@"mm\:ss"), 0);
}
旁注,如果您是设计师创建的,则不需要 timerIdle.Dispose();
。如果您创建它并通过代码订阅 Tick
事件,那么您也必须删除处理程序然后处理它:
//...
timerIdle.Stop();
timerIdle.Tick -= timerIdle_Tick;
timerIdle.Dispose();
//...
您可能想阅读 Standard TimeSpan format strings 以了解更多信息。
我创建了一个计时器,returns 减少时间:
public static void timerIdle_Tick(object sender, EventArgs e)
{
if (tempo >= 60)
{
minuto = tempo / 60;
segundo = tempo % 60;
}
else
{
minuto = 0;
segundo = tempo;
}
segundo--;
if (minuto > 0)
{
if (segundo < 0)
{
segundo = 59;
minuto--;
}
}
if (minuto == 0 && segundo == 0)
{
timerIdle.Stop();
timerIdle.Dispose();
dgView.addLinha(2, "config_Teste", "TIMER ACABOU", 0);
}
else
{
tempo = (minuto * 60) + segundo;
string temp = minuto + ":" + segundo;
lblIdle.Text = temp;
dgView.addLinha(2, "config_Teste", temp, 0);
}
}
我得到以下结果:
...
1:12
1:11
1:10
1:9
1:8
...
0:0
如果分秒只有一位,我需要加0(零):
01:12
01:11
01:10
01:09
01:08
...
00:00
PadLeft() 函数不起作用,因为我使用的是 C# 7.3 (.NET Framework 4.7.2)。
拜托,帮帮我。
所以这会将您的分钟和秒格式化为两位数
int minuto = 1;
int segundo= 1;
string temp = string.Format($"{minuto:D2}:{segundo:D2}");
输出:
01:01
您只需要在启动Timer
时设置倒计时持续时间(以秒为单位),在Tick
事件中每秒减1,直到得到0,然后停止计时器。使用TimeSpan.FromSeconds方法格式化时间字符串。
//Class variable...
int segundo = 0;
void WhereYouStartTheTimer()
{
segundo = 60; //1 Minute
timerIdle.Interval = 1000; //Fires every 1 second.
timerIdle.Start();
}
private void timerIdle_Tick(object sender, EventArgs e)
{
segundo--;
if (segundo == 0)
{
timerIdle.Stop();
dgView.addLinha(2, "config_Teste", "TIMER ACABOU", 0);
}
else
dgView.addLinha(2, "config_Teste", TimeSpan.FromSeconds(segundo).ToString(@"mm\:ss"), 0);
}
旁注,如果您是设计师创建的,则不需要 timerIdle.Dispose();
。如果您创建它并通过代码订阅 Tick
事件,那么您也必须删除处理程序然后处理它:
//...
timerIdle.Stop();
timerIdle.Tick -= timerIdle_Tick;
timerIdle.Dispose();
//...
您可能想阅读 Standard TimeSpan format strings 以了解更多信息。