关键词搜索

源码搜索 ×
×

C# 根据KeyEventArgs与组合键字符串相互转换

发布2015-08-01浏览6930次

详情内容

  1. /// 快捷键相关的类
  2. /// </summary>
  3. public static class HotKeyInfo
  4. {
  5. /// <summary>
  6. /// 根据KeyEventArgs生成组合键字符串
  7. /// </summary>
  8. /// <param name="e"></param>
  9. /// <returns></returns>
  10. public static string GetStringByKey(KeyEventArgs e)
  11. {
  12. if (e.KeyValue == 16)
  13. {
  14. return "Shift + ";
  15. }
  16. else if(e.KeyValue == 17)
  17. {
  18. return "Ctrl + ";
  19. }
  20. else if(e.KeyValue == 18)
  21. {
  22. return "Alt + ";
  23. }
  24. else
  25. {
  26. StringBuilder keyValue = new StringBuilder();
  27. if (e.Modifiers != 0)
  28. {
  29. if (e.Control)
  30. {
  31. keyValue.Append("Ctrl + ");
  32. }
  33. if (e.Alt)
  34. {
  35. keyValue.Append("Alt + ");
  36. }
  37. if (e.Shift)
  38. {
  39. keyValue.Append("Shift + ");
  40. }
  41. }
  42. if ((e.KeyValue >= 48 && e.KeyValue <= 57)) //0-9
  43. {
  44. keyValue.Append(e.KeyCode.ToString());
  45. //keyValue.Append(e.KeyCode.ToString().Substring(1));
  46. }
  47. else
  48. {
  49. keyValue.Append(e.KeyCode);
  50. }
  51. return keyValue.ToString();
  52. }
  53. }
  54. /// <summary>
  55. /// 根据按键获得单一键值对应字符串
  56. /// </summary>
  57. /// <param name="e"></param>
  58. /// <returns></returns>
  59. public static string GetSingleStrByKey(KeyEventArgs e)
  60. {
  61. if (e.KeyValue == 16)
  62. {
  63. return "Shift";
  64. }
  65. else if (e.KeyValue == 17)
  66. {
  67. return "Ctrl";
  68. }
  69. else if (e.KeyValue == 18)
  70. {
  71. return "Alt";
  72. }
  73. else
  74. {
  75. return e.KeyCode.ToString();
  76. }
  77. }
  78. /// <summary>
  79. /// 根据string生成KeyEventArgs
  80. /// </summary>
  81. /// <param name="strKey"></param>
  82. /// <returns></returns>
  83. public static KeyEventArgs GetKeyByString(string strKey)
  84. {
  85. Keys keyResult = new Keys();
  86. string[] strKeyCodes = strKey.Split('+');
  87. if (strKeyCodes.Length > 0)
  88. {
  89. int numberKey;
  90. foreach (string keyEach in strKeyCodes)
  91. {
  92. if (keyEach.Trim().ToUpper() == "CTRL")
  93. {
  94. keyResult = keyResult | Keys.Control;
  95. }
  96. else if (keyEach.Trim().ToUpper() == "SHIFT")
  97. {
  98. keyResult = keyResult | Keys.Shift;
  99. }
  100. else if (keyEach.Trim().ToUpper() == "ALT")
  101. {
  102. keyResult = keyResult | Keys.Alt;
  103. }
  104. //数字
  105. else if (int.TryParse(keyEach, out numberKey))
  106. {
  107. KeysConverter converter = new KeysConverter();
  108. Keys getKey = (Keys)converter.ConvertFromString('D' + keyEach);
  109. keyResult = keyResult | getKey;
  110. }
  111. //其他(字母,F0-F12)
  112. else
  113. {
  114. KeysConverter converter = new KeysConverter();
  115. Keys getKey = (Keys)converter.ConvertFromString(keyEach);
  116. keyResult = keyResult | getKey;
  117. }
  118. }
  119. }
  120. KeyEventArgs newEventArgs = new KeyEventArgs(keyResult);
  121. return newEventArgs;
  122. }
  123. }

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载