如何在c#中测量点击之间的时间

本文关键字:之间 时间 测量 | 更新日期: 2023-09-27 18:08:14

你好,所以我想做这个代码。我一直点击,如果点击之间的时间是>= 2000ms,那么在标签中写一些东西,否则继续点击。

Stopwatch sw = new Stopwatch();
    double tt = 2000;
    double duration = sw.ElapsedMilliseconds;
    private void button1_Click(object sender, EventArgs e)
    {
        sw.Start();
        if (duration >= tt)
        {
            label1.Text = "Speed reached!";
        }
        else
        {
            sw.Stop();
            duration = 0;
        }
    }

如何在c#中测量点击之间的时间

按如下方式修改代码:

    private void button1_Click(object sender, EventArgs e)
    {
        sw.Stop();
        if (sw.Elapsed.Milliseconds >= tt)
        {
            label1.Text = "Speed reached!";
        }
        else
        {
            sw.Reset();
            sw.Start();
        }
    }

如果我理解正确的话,你想要这样的内容:

Stopwatch sw = new Stopwatch();
double tt = 2000;
private void button1_Click(object sender, EventArgs e)
{
    sw.Stop();
    if (sw.ElapsedMilliseconds >= tt)
    {
        label1.Text = "Speed reached!";
    }
    sw.Reset();
    sw.Start();
}

这将在第一次点击时开始一个秒表,然后在每次点击时它将测量点击之间的时间。

private void button1_Click(object sender, EventArgs e)
{
    Session["PrevClickTime"] = Session["PrevClickTime"] ?? DateTime.Now.AddDays(-1);
    if (((DateTime)Session["PrevClickTime"]).Subtract(DateTime.Now).Milliseconds >= 2000)
    {
        label1.Text = "Speed reached!";
    }
    else
    {
        // do y
    }
    Session["PrevClickTime"] = DateTime.Now
}

sw。ElapsedMilliseconds是一个值类型,而不是引用类型如果你把它赋值给一个变量,ElapsedMilliseconds就会改变你的变量不会改变

同样,将start放在代码的末尾这应该可以工作

Stopwatch sw = new Stopwatch();
    double tt = 2000;
    private void button1_Click(object sender, EventArgs e)
    {
        if (sw.ElapsedMilliseconds >= tt)
        {
            label1.Text = "Speed reached!";
        }
        else
        {
            sw.Stop();
            sw.Reset();
        }
        sw.Start();
    }

我建议另一种方法,您可以在每次单击时删除单击事件处理程序,并启动计时器2秒并在计时器的滴答声中,再次附加单击事件处理程序。下面是示例代码:

System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer() { Interval = 2000  }; // here time in milliseconds
private void button1_Click(object sender, EventArgs e)  // event handler of your button
{
    button1.Click -= button1_Click; // remove the event handler for now
    label1.Text = "Speed reached!";
    // remove already attached tick handler if any, otherwise the handler would be called multiple times
    timer.Tick -= timer_Tick;
    timer.Tick += timer_Tick;
    timer.Start();
}
void timer_Tick(object sender, System.EventArgs e)
{
    button1.Click += button1_Click; // attach the event handler again
    timer.Stop();
}