我怎麼能轉換鍵(按鍵在KeyEventArgs)爲一個字符串。鍵(ENUM)字符串
例如,如果用戶輸入 「 - 」:
e.Key.ToString() = "Subtract"
new KeyConverter().ConvertToString(e.Key) = "Subtract"
我想要的是讓 「 - 」 號的結果,而不是 「減去」 ......
我怎麼能轉換鍵(按鍵在KeyEventArgs)爲一個字符串。鍵(ENUM)字符串
例如,如果用戶輸入 「 - 」:
e.Key.ToString() = "Subtract"
new KeyConverter().ConvertToString(e.Key) = "Subtract"
我想要的是讓 「 - 」 號的結果,而不是 「減去」 ......
使用Dictionary<TKey, TValue>
:
類級別:
private readonly Dictionary<string, string> operations = new Dictionary<string, string>;
public ClassName() {
// put in constructor...
operations.Add("Subtract", "-");
// etc.
}
在你的方法,只需使用operations[e.Key.ToString()]
來代替。
編輯:實際上,對於更多的效益:
private readonly Dictionary<System.Windows.Input.Key, char> operations = new Dictionary<System.Windows.Input.Key, char>;
public ClassName() {
// put in constructor...
operations.Add(System.Windows.Input.Key.Subtract, '-');
// etc.
}
在你的方法,只需使用operations[e.Key]
來代替。
該帖子生成「減」,因爲Key
返回KeyCode
枚舉,其中Subtract
是成員。
沒有一個明確的映射,有沒有辦法得到一個「 - 」出了這一點。 (對於顯式映射,使用一個開關,if/else語句,字典,或任何你喜歡:-)
要獲得字符而不是關鍵代碼,或者用不同的事件?
快樂編碼
什麼不同的事件? – Melursus
您可以使用說明的屬性,然後覆蓋的ToString()得到「 - 」而不是名稱。下面是說明如何做到這一點http://blogs.msdn.com/b/abhinaba/archive/2005/10/20/c-enum-and-overriding-tostring-on-it.aspx
非常有趣的文章。你知道這種技術是否可以應用於現有類型? – 2011-06-27 20:21:06
當然。你只需要訪問tp來添加描述屬性 – boca
啊。這個枚舉是.NET的一部分,儘管:( – 2011-06-27 20:28:17
你可以使用這樣的功能的物品:
public static string KeycodeToChar(int keyCode)
{
Keys key = (Keys)keyCode;
switch (key)
{
case Keys.Add:
return "+";
case Keys.Subtract:
return "-"; //etc...
default:
return key.ToString();
}
}
那麼,你可以使用強制轉換,如果你想轉換一個鍵對象到字符串對象,像這樣:
string key = ((char)e.Key).ToString();
只要記住一個Keys對象可以接受char轉換,所以我們可以將生成的char對象轉換爲一個字符串對象。 如果你只想把它添加到一個char對象,只是刪除的垃圾,並使其像這樣:
char key = (char)e.key;
)你可以,但它沒有幫助。Key-Enum值和字符集值之間的雙射映射根本不可能,因爲碰撞(Key.NumPad0和Key.D0有有不同的值,但都應該導致字符'0')實際上,Key-Enum的整個映射不同於任何字符集,只需在Visual Studio中按下Key-Enum中的F12並說服自己 – 0xDEADBEEF
He想要將Keys對象的值作爲字符串獲取,而不是相反,所以我可以在這裏看到沒有問題@ 0xDEADBEEF –
我不明白你想要做什麼。這不是有效的C#代碼。 – Amy
對於那些(像我)需要看這件事:http://msdn.microsoft.com/en-us/library/system.windows.input.keyeventargs.key.aspx –
@Inuyasha他試圖找到一種方法將返回標準鍵帽/字形/符號的關鍵,而不是** **枚舉名字,這將是更詳細。目的很明確,海事組織。 –