如何测量点击之间的时间?
How do I measure time between clicks?
我一直在为自己制作一个小项目,试图测量两次点击之间的时间。稍后我会将其更改为按键,但我可以自己完成。我需要以毫秒为单位测量时间,我知道的唯一方法是使用计时器...
bool clicked = true;
int time = 0;
private void button1_Click(object sender, EventArgs e)
{
if (clicked)
{
timer1.Start();
clicked = false;
}
else
{
timer1.Stop();
clicked = true;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
time += 10;
label1.Text = Convert.ToString(time);
}
定时器设置为 10 个刻度的间隔,只是为了直观地看到我还让定时器显示时间。但是当我测试它时,我添加了另一个间隔为 1000 刻度的计时器,由此我看到了不同之处。后来我意识到计时器不准确。我开始挖掘,唯一被推荐的是秒表,我尝试了这个...
private void button1_Click(object sender, EventArgs e)
{
var timer = new Stopwatch();
if (clicked)
{
timer.Start();
clicked = false;
}
else
{
timer.Stop();
TimeSpan timeTaken = timer.Elapsed;
label1.Text = timeTaken.ToString();
clicked = true;
}
}
但是那个returns每次都是“00:00:00”的结果。我该怎么办?
我认为您不需要计时器,您只需计算第一次点击(将点击发生的日期和时间存储在 dtPreviousClick
变量中)与第二次点击之间经过的时间。
2 个 DateTime
对象之间的区别是一个 Timespan
个对象,它有一个名为 TotalMilliseconds
的 属性,这是您要查找的值。
参考:https://docs.microsoft.com/en-us/dotnet/api/system.timespan.totalmilliseconds
bool clicked = false;
DateTime dtPreviousClick;
private void button1_Click(object sender, EventArgs e)
{
if (!clicked)
{
dtPreviousClick = DateTime.UtcNow;
clicked = true;
label1.Text = "awaiting another click....";
}
else
{
label1.Text = (DateTime.UtcNow - dtPreviousClick).TotalMilliseconds.ToString();
clicked = false;
}
}
我一直在为自己制作一个小项目,试图测量两次点击之间的时间。稍后我会将其更改为按键,但我可以自己完成。我需要以毫秒为单位测量时间,我知道的唯一方法是使用计时器...
bool clicked = true;
int time = 0;
private void button1_Click(object sender, EventArgs e)
{
if (clicked)
{
timer1.Start();
clicked = false;
}
else
{
timer1.Stop();
clicked = true;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
time += 10;
label1.Text = Convert.ToString(time);
}
定时器设置为 10 个刻度的间隔,只是为了直观地看到我还让定时器显示时间。但是当我测试它时,我添加了另一个间隔为 1000 刻度的计时器,由此我看到了不同之处。后来我意识到计时器不准确。我开始挖掘,唯一被推荐的是秒表,我尝试了这个...
private void button1_Click(object sender, EventArgs e)
{
var timer = new Stopwatch();
if (clicked)
{
timer.Start();
clicked = false;
}
else
{
timer.Stop();
TimeSpan timeTaken = timer.Elapsed;
label1.Text = timeTaken.ToString();
clicked = true;
}
}
但是那个returns每次都是“00:00:00”的结果。我该怎么办?
我认为您不需要计时器,您只需计算第一次点击(将点击发生的日期和时间存储在 dtPreviousClick
变量中)与第二次点击之间经过的时间。
2 个 DateTime
对象之间的区别是一个 Timespan
个对象,它有一个名为 TotalMilliseconds
的 属性,这是您要查找的值。
参考:https://docs.microsoft.com/en-us/dotnet/api/system.timespan.totalmilliseconds
bool clicked = false;
DateTime dtPreviousClick;
private void button1_Click(object sender, EventArgs e)
{
if (!clicked)
{
dtPreviousClick = DateTime.UtcNow;
clicked = true;
label1.Text = "awaiting another click....";
}
else
{
label1.Text = (DateTime.UtcNow - dtPreviousClick).TotalMilliseconds.ToString();
clicked = false;
}
}