我想构建一个简单的 C# Windows 窗体应用程序来收集用户的击键数据。
基本上,用户需要输入一个长度为 10 的单词。我想记录每个键的按住时间,keydown 到 keydown 时间以及相邻击键的 keyup 和 keydown(所以有 10 + 9 + 9 = 28 个测量值)。
谁能告诉我如何使用文本框事件捕获这些信息?
提前致谢
我想构建一个简单的 C# Windows 窗体应用程序来收集用户的击键数据。
基本上,用户需要输入一个长度为 10 的单词。我想记录每个键的按住时间,keydown 到 keydown 时间以及相邻击键的 keyup 和 keydown(所以有 10 + 9 + 9 = 28 个测量值)。
谁能告诉我如何使用文本框事件捕获这些信息?
提前致谢
您KeyUp
可以KeyDown
在TextBox
. 您可以使用获取当前时间戳DateTime.Now
。
存储您的最后一次KeyUp
和KeyDown
事件时间并添加如下测量:
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);
}