簡體   English   中英

如何在C#中找到字符的鍵代碼?

[英]How do I find the key code of a character in C#?

Microsoft提供了有關字符鍵代碼文檔 例如,人們可以發現刪除鍵的鍵代碼為8,而添加鍵(+)的鍵代碼為107。在Windows窗體應用程序中,我試圖創建一個僅接受數字和加號(+)。 為此,我實現了以下代碼:

private void ansBox_KeyPress(object sender, KeyPressEventArgs e)
{
   char ch = e.KeyChar;
   if (!Char.IsDigit(ch) && ch != 8 && ch != 107) e.Handled = true;
}

該代碼成功地禁止了除數字和刪除之外的所有輸入,但令我驚訝的是,它阻止了加號(+)的使用。 這使我相信“​​ 107”不是C#中加號的鍵代碼,或者我沒有正確實現鍵代碼。 有什么方法可以類似於識別變量類型那樣以編程方式找到字符的鍵碼,從而可以確定加號字符的鍵碼? 另外,嘗試實現上述文本框功能時,我做錯了什么嗎?

KeyCodeKeyChar不相同。

KeyCodeKeyEventArgs的屬性,並為KeyDownKeyUp事件提供數據。 它具有Keys類型,它是一個enum

KeyCharKeyPressEventArgs的屬性,並提供KeyPress事件的數據。 它是一個char

兩者的數字代碼通常是不同的。

您可以像這樣簡單地測試加號

ch != '+'

C#具有Backspace的轉義序列'\\b' == (char)8

if (!Char.IsDigit(ch) && ch != '\b' && ch != '+') e.Handled = true;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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