如何检索最后按下的键数
本文关键字:最后 何检索 检索 | 更新日期: 2023-09-27 18:09:16
我正在尝试使用e.p keydata,但它返回"NumPad2"或"D2"我想只返回"2",可以使用e.p keycode或任何…因为它工作,我已经尝试转换为int,没有工作
这应该是你的开始。
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
string pressedKey = e.KeyData.ToString();
if (pressedKey.StartsWith("D"))
{
pressedKey = pressedKey.Replace("D", "");
MessageBox.Show(pressedKey);
}
if (pressedKey.StartsWith("NumPad"))
{
pressedKey = pressedKey.Replace("NumPad", "");
MessageBox.Show(pressedKey);
}
}
经过一番研究,似乎你要么必须做类似Rikki B建议的事情,要么你可以创建一个自定义文本框并覆盖OnKeyDown和OnKeyPress,如下所示:
首先创建自定义事件参数:
public class CustomKeyEventArgs : KeyEventArgs
{
public char LastCharPressed { get; set; }
public CustomKeyEventArgs(Keys keyData, char lastCharPressed) : base(keyData)
{
LastCharPressed = lastCharPressed;
}
}
然后在自定义文本框中设置:
public delegate void CustomKeyUpHandler(object sender, CustomKeyEventArgs e);
public event CustomKeyUpHandler OnCustomKeyUp;
private char lastChar;
protected override void OnKeyPress(KeyPressEventArgs e)
{
lastChar = e.KeyChar;
base.OnKeyPress(e);
}
protected override void OnKeyUp(KeyEventArgs e)
{
if(OnCustomKeyUp != null)
OnCustomKeyUp(this, new CustomKeyEventArgs(e.KeyData, lastChar));
base.OnKeyUp(e);
}