[英]How retrieve number of last key pressed?
我正在嘗試使用e.KeyData,但它返回“NumPad2”或“D2”我希望只返回“2”,可以使用e.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,如下所示:
首先創建自定義事件args:
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.