zoukankan      html  css  js  c++  java
  • C# 依据KeyEventArgs与组合键字符串相互转换

       /// 快捷键相关的类
        /// </summary>
        public static class HotKeyInfo
        {
            /// <summary>
            /// 依据KeyEventArgs生成组合键字符串
            /// </summary>
            /// <param name="e"></param>
            /// <returns></returns>
            public static string GetStringByKey(KeyEventArgs e)
            {
                if (e.KeyValue == 16)
                {
                    return "Shift + ";
                }
                else if(e.KeyValue == 17)
                { 
                    return "Ctrl + ";
                }
                else if(e.KeyValue == 18)
                {
                    return "Alt + ";
                }
                else
                {
                    StringBuilder keyValue = new StringBuilder();
                    if (e.Modifiers != 0)
                    {
                        if (e.Control)
                        {
                            keyValue.Append("Ctrl + ");
                        }
                        if (e.Alt)
                        {
                            keyValue.Append("Alt + ");
                        }
                        if (e.Shift)
                        {
                            keyValue.Append("Shift + ");
                        }
                    }
                    if ((e.KeyValue >= 48 && e.KeyValue <= 57))    //0-9
                    {
                        keyValue.Append(e.KeyCode.ToString());
                        //keyValue.Append(e.KeyCode.ToString().Substring(1));
                    }
                    else
                    {
                        keyValue.Append(e.KeyCode);
                    }
    
                    return keyValue.ToString();
                }
            }
    
            /// <summary>
            ///  依据按键获得单一键值相应字符串
            /// </summary>
            /// <param name="e"></param>
            /// <returns></returns>
            public static string GetSingleStrByKey(KeyEventArgs e)
            {
                if (e.KeyValue == 16)
                {
                    return "Shift";
                }
                else if (e.KeyValue == 17)
                {
                    return "Ctrl";
                }
                else if (e.KeyValue == 18)
                {
                    return "Alt";
                }
                else
                {
                    return e.KeyCode.ToString();
                }
            }
    
            /// <summary>
            /// 依据string生成KeyEventArgs
            /// </summary>
            /// <param name="strKey"></param>
            /// <returns></returns>
            public static KeyEventArgs GetKeyByString(string strKey)
            {
                Keys keyResult = new Keys();
                string[] strKeyCodes = strKey.Split('+');
                if (strKeyCodes.Length > 0)
                {
                    int numberKey;
                    foreach (string keyEach in strKeyCodes)
                    {
                        if (keyEach.Trim().ToUpper() == "CTRL")
                        {
                            keyResult = keyResult | Keys.Control;
                        }
                        else if (keyEach.Trim().ToUpper() == "SHIFT")
                        {
                            keyResult = keyResult | Keys.Shift;
                        }
                        else if (keyEach.Trim().ToUpper() == "ALT")
                        {
                            keyResult = keyResult | Keys.Alt;
                        }
                        //数字
                        else if (int.TryParse(keyEach, out numberKey))
                        {
                            KeysConverter converter = new KeysConverter();
                            Keys getKey = (Keys)converter.ConvertFromString('D' + keyEach);
                            keyResult = keyResult | getKey;
                        }
                        //其它(字母,F0-F12)
                        else
                        {
                            KeysConverter converter = new KeysConverter();
                            Keys getKey = (Keys)converter.ConvertFromString(keyEach);
                            keyResult = keyResult | getKey;
                        }
                    }
     
                }
                KeyEventArgs newEventArgs = new KeyEventArgs(keyResult);
                return newEventArgs;
            }
        }

  • 相关阅读:
    学习:大文件统计与排序
    共享库SidebySide之Windows Shared Assembly
    Bundle是个好东西
    所谓的代码段、数据段
    [design decision] common case vs. rare case
    如何给C++设计一个GC
    玩一把tesseract
    [design decision]让工具依赖于naming convention是个拙劣的做法
    监控域名可用性并自动发信
    调试lua代码
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7010866.html
Copyright © 2011-2022 走看看