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

来源:互联网 发布:手机文件编辑软件 编辑:程序博客网 时间:2024/05/16 08:41
   /// 快捷键相关的类    /// </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;        }    }

0 0
原创粉丝点击