0

我想构建一个简单的 C# Windows 窗体应用程序来收集用户的击键数据。

基本上,用户需要输入一个长度为 10 的单词。我想记录每个键的按住时间,keydown 到 keydown 时间以及相邻击键的 keyup 和 keydown(所以有 10 + 9 + 9 = 28 个测量值)。

谁能告诉我如何使用文本框事件捕获这些信息?

提前致谢

4

1 回答 1

4

KeyUp可以KeyDownTextBox. 您可以使用获取当前时间戳DateTime.Now

存储您的最后一次KeyUpKeyDown事件时间并添加如下测量:

private DateTime? keyUpTime = null;
private DateTime? keyDownTime = null;

private List<double> keyDownKeyUpMeasurements = new List<double>();
private List<double> keyDownKeyDownMeasurements = new List<double>();
private List<double> keyUpKeyDownMeasurements = new List<double>();

private void textBox_KeyDown(object sender, KeyEventArgs e)
{
    DateTime prevKeyDownTime = keyDownTime;
    keyDownTime = DateTime.Now;

    if (prevKeyDownTime != null)
    {
        keyDownKeyDownMeasurements
            .Add(keyDownTime.Subtract(prevKeyDownTime).TotalMilliseconds);
    }

    if (keyUpTime != null)
    {
        keyUpKeyDownMeasurements
            .Add(keyDownTime.Subtract(keyUpTime).TotalMilliseconds);
    }
}

private void textBox_KeyUp(object sender, KeyEventArgs e)
{
    keyUpTime = DateTime.Now;
    keyDownKeyUpMeasurements
        .Add(keyUpTime.Subtract(keyDownTime).TotalMilliseconds);
}
于 2013-11-25T04:23:07.853 回答