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

简介: /// 快捷键相关的类 /// </summary> public static class HotKeyInfo { /// <summary> /// 根据KeyEventArgs生成组合键字符串 /// </summary> /// <param nam
   /// 快捷键相关的类
    /// </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;
        }
    }

目录
相关文章
Qt 将字符串转成16进制显示
最近项目用到了需要将字符串转换成16进制显示。这玩意折腾了一上午。
827 0
|
3月前
从键盘输入一些字符
【10月更文挑战第17天】从键盘输入一些字符。
45 3
转换大小写与完成字符串反转
转换大小写与完成字符串反转
107 0
|
存储 程序员 C#
C#的注释、快捷键、字符和运算
C#的注释、快捷键、字符和运算
368 0
LabVIEW十六进制和字符类型转换
在LabVIEW的串口通信中,数据的发送与接收都是基于字符串控件(常量)进行的。 字符串控件(常量)有两种表现形式:正常显示和十六进制显示。
|
数据采集 移动开发
一日一技:在字符串中批量替换单个字符
一日一技:在字符串中批量替换单个字符
151 0
|
关系型数据库 MySQL
如何用“”格式化数字 作为千位分隔符,“,”作为十进制分隔符?
如何用“”格式化数字 作为千位分隔符,“,”作为十进制分隔符?
125 0
[oeasy]python0052_ raw格式字符串_单引号_双引号_反引号_ 退格键
[oeasy]python0052_ raw格式字符串_单引号_双引号_反引号_ 退格键
119 0
[oeasy]python0052_ raw格式字符串_单引号_双引号_反引号_ 退格键
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)
545 0
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)
|
数据采集 存储 开发工具
[oeasy]python0013_ASCII码表_英文字符编码_键盘字符
[oeasy]python0013_ASCII码表_英文字符编码_键盘字符
145 0
[oeasy]python0013_ASCII码表_英文字符编码_键盘字符