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;
        }
    }
时间: 2024-11-03 21:15:09

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

实例详解JSON数据格式及json格式数据域字符串相互转换_javascript技巧

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成. 基础结构 JSON建构于两种结构: 1. "名称/值"对的集合(A collection of name/value pairs).不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash t

电脑禁用&quot;Win+&quot;组合键技巧

  小编零星的介绍了不少以"Win键"开头的快捷组合键,这些快捷组合键不仅能够为大家提供方便的程序入口,还有效的提高了操作效率.为了方便大家随时学习和记忆,小编特意将它们做成了可以保存在手机或电脑中的图片,方便大家随时调取查看,喜欢的记得"另存为"哦! 虽然它们有着种种好处,但也会和某些常用软件的快捷键产生冲突.可恨的是Windows并没有提供可以禁用相关"Win+"快捷键的设置项,所以呢,我们只能继续从注册表下手了. 先用"Win+R

WPF获取键盘状态(如WPF组合键)

对于键盘事件(PreviewKeyDown,KeyDown,PreviewKeyUp,KeyUp)获取组合键等键盘信息比较容易 1.KeyEventArgs对象包含一个KeyStates属性,该属性反映触发事件的键的属性 2.KeyboardDevice属性为键 盘上的所有键提供了相同的信息,自然也提供了一个KeyboardDevice类的一个实例.它的属性包括当前是哪个元素具有焦点,以及当事件发生时按下了哪些修饰键(Modifiers)包括Shift.Ctrl.Alt键,并且使用位逻辑来检查它

&amp;#106avascript极速狂飙:组合拼接字符串的效率

字符串     在脚本开发过程中,经常会按照某个规则,组合拼接出一个大字符串进行输出.比如写脚本控件时控制整个控件的外观的HTML标签输出,比如AJAX里得到服务器端的回传值后动态分析创建HTML标签时,不过这里我就不讨论拼接字符串的具体应用了,我只是想在这里讨论一下拼接的效率.     字符串的拼接在我们写代码的时候都是用"+="这个运算符,s += String; 这是我们最为熟知的写法,不知道大家有没有注意过没有,在组合的字符串容量有几十K甚至几百K的时候,脚本执行起来很慢,CP

JavaScript极速狂飙:组合拼接字符串的效率

javascript|字符串     在脚本开发过程中,经常会按照某个规则,组合拼接出一个大字符串进行输出.比如写脚本控件时控制整个控件的外观的HTML标签输出,比如AJAX里得到服务器端的回传值后动态分析创建HTML标签时,不过这里我就不讨论拼接字符串的具体应用了,我只是想在这里讨论一下拼接的效率.    字符串的拼接在我们写代码的时候都是用"+="这个运算符,s += String; 这是我们最为熟知的写法,不知道大家有没有注意过没有,在组合的字符串容量有几十K甚至几百K的时候,脚

判断鼠标双键按下(附键盘组合键)

帮你查了一下API,其中有段话可能你没注意看:The button mask returned by InputEvent.getModifiers() reflects only the button that changed state, not the current state of all buttons. (Note: Due to overlap in the values of ALT_MASK/BUTTON2_MASK and META_MASK/BUTTON3_MASK, t

selenium-webdriver(python) (十二) 键盘组合键用法

本节重点: l 键盘按键用法 l 键盘组合键用法 l send_keys() 输入中文运行报错问题 键盘按键键用法: #coding=utf-8 from selenium import webdriver from selenium.webdriver.common.keys import Keys #需要引入keys包 import os,time driver = webdriver.Firefox() driver.get("http://passport.kuaibo.com/logi

Word 2013中使用Ctrl+Alt+K组合键自动套用格式

在Word2013文档中,用户可以使用Ctrl+Alt+K组合键执行自动套用格式操作.使用该组合键进行自动套用格式时,Word2013将根据自动套用格式选项中的设置自动进行,不会出现任何提示. 首先选中需要应用自动套用格式的文本(如果不选中文本作用于全文),然后按下Ctrl+Alt+K组合键进行自动套用格式.如果应用自动套用格式后,存在不符合实际应用需要的情况,则可以在快速访问工具栏单击"撤销"按钮撤销当前操作.然后重新设置自动套用格式选项,并再次执行自动套用格式操作,如图201308

使用JPA和Hibernate实现组合键

问题定义 本技巧从问题的简单的描述开始:定义组合数据库键.这个键组合了多列,唯一地定义一个数据库表的行.有时,组合键也称为自然键 或业务键.某些时候使用组合键的原因是所选键在某些方面与最终用户的业务领域相关联.要定义组合键,只需从该领域中选择一些属性,并将其组合在一起,提供所需的行唯一性程度.组合键的缺点是设计和编码略有难度.此外,组合键倾向于将您的数据库和 ORM 设计绑定到原始领域.后者可能会成为严重的问题. 实体代码 清单 1 展示了一个名为 BillingAddress 的 Java 类