簡體   English   中英

如何檢索最后一個按鍵的數量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM