• 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;
            }
        }

  • 相关阅读:
    react文本溢出hover气泡显示全部文本——JS判断文本溢出
    ecosystem.config
    git删除中间某次提交
    HTML5 新元素
    HTML5存储
    简述LVS(Linux虚拟服务器)
    简述线程池
    网络协议基础
    JVM常用性能检测工具
    线程间的“通信”方法
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7010866.html
Copyright © 2020-2023  润新知