如何衡量点击之间的时间?
Posted
技术标签:
【中文标题】如何衡量点击之间的时间?【英文标题】:How do I measure time between clicks? 【发布时间】:2021-12-12 02:52:40 【问题描述】:我一直在为自己制作一个小项目,试图测量两次点击之间的时间。稍后我会将其更改为按键,但我可以自己完成。我需要以毫秒为单位测量时间,而我知道的唯一方法是使用计时器......
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;
但是每次都会返回“00:00:00”的结果。我该怎么办?
【问题讨论】:
var timer = new Stopwatch();
这是方法本地声明的。尝试将其移至表单级别。
试试Stopwatch();
函数。
【参考方案1】:
我认为您不需要计时器,您只需要计算第一次点击(将它发生在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;
【讨论】:
以上是关于如何衡量点击之间的时间?的主要内容,如果未能解决你的问题,请参考以下文章