亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C#如何將虛擬鍵碼轉換為char?

C#如何將虛擬鍵碼轉換為char?

C#
函數式編程 2019-12-04 12:38:50
我正在嘗試將虛擬鍵碼映射到char。我的代碼使用ProcessCmdKey來監聽WM_KEYDOWN,這使我可以訪問所按下的鍵。例如,當我按單引號時,我會得到一個鍵222,我想將它映射到代表...您猜對了...單引號的keychar 39。我的開發環境是:-.net Framework 2.0-UserControl放置在很多地方你知道這個問題的答案嗎?
查看完整描述

3 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

是的,我確實使用了該MapVirtualKey方法。但是我期待更多有關如何使用它的細節:DllImport要使用的指令,enum特定于字符映射的指令等。


我不喜歡這些答案,在Google上停留大約5秒鐘,然后提出一個解決方案:真正的挑戰是將所有內容放在一起,而不必浪費大量時間在無樣本的MSDN頁面或其他編碼論壇上為了得到你的答案。沒有冒犯的根基,但是您的回答(即使是很好)也沒問題,因為即使在論壇上發布我的問題之前我也有這個答案!


因此,您去了,我要發布我想要的東西-一個現成的C#解決方案:


1-將此指令放在您的類中:


[DllImport("user32.dll")]

static extern int MapVirtualKey(uint uCode, uint uMapType);

2-像這樣檢索您的字符:


  protected override bool ProcessCmdKey(ref Message msg, Keys keyData)      

  {

     const int WM_KEYDOWN = 0x100;


     if (msg.Msg == WM_KEYDOWN)

     {            

        // 2 is used to translate into an unshifted character value 

        int nonVirtualKey = MapVirtualKey((uint)keyData, 2);


        char mappedChar = Convert.ToChar(nonVirtualKey);

     }


     return base.ProcessCmdKey(ref msg, keyData);

  }

感謝您的關心...并享受!


查看完整回答
反對 回復 2019-12-04
  • 3 回答
  • 0 關注
  • 648 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號