测量键盘上下键之间的间隔

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

我想测量当用户按下键盘上的右箭头键并拿起它时的时间(秒)。

我已经研究了这个问题,并找到了一些页面,但没有一个好的答案。

我如何测量这个时间?

我的代码

我在类的顶部定义了一个List:

List<int> date_down = new List<int>();

当用户按下右方向键时:(在Form_KeyDown方法中)

if (Keyboard.IsKeyDown(Key.Right))
{
    date_down.Add(DateTime.Now.Second);
}

当用户按下右方向键并长按数次时添加到列表

当用户拿起key(在Form_keyUp方法中)

if (e.Key == Key.Right)
{
    var second = DateTime.Now.Second - date_down[0];
}

测量键盘上下键之间的间隔

这可能是另一个

using System.Diagnostics;
using System.Windows.Forms;
public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        var watch = new Stopwatch();
        KeyDown += (s, e) => watch.Start();
        KeyUp += (s, e) => { 
            watch.Stop();
            var elapsed = watch.ElapsedMilliseconds;    // Duration
            watch.Reset();
        };
    }
}

您的代码是一个很好的开始,尽管您可能需要稍微修改一下才能看到它的工作。

private void form1_KeyDown(object sender, System.Windows.Forms.KeyPressEventArgs e)
{        
    if (e.Key == Key.Right)
    {
        date_down = DateTime.Now;
    }
    e.Handled = true;
}
private void form1_KeyUp(object sender, System.Windows.Forms.KeyPressEventArgs e)
{ 
    if (e.Key == Key.Right)
    {
        var timeDelta = DateTime.Now - date_down;
    }
}

如果你想的话,你也可以从中触发一个计时器,而不是抓取当前时间并计算。

您可以从查找c#中用于度量时间的各种类开始,例如这个。

您还需要一个类来检测按下键和按上键。也许这有帮助。

除此之外,实现应该相当简单。当键被按下时启动计时器,当键被释放时停止计时器,并将该时间用作两个事件之间的测量时间。