/// 快捷键相关的类
/// </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;
}
}

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

  1. C# 如何捕获键盘按钮和组合键以及KeyPress/KeyDown事件之间的区别 (附KeyChar/KeyCode值)

    1. 首先将窗口属性KeyPreview设为true,如果属性对话框中找不到,就直接在代码里添加: 2. 添加KeyPress / KeyDown事件: 1.KeyPress 和KeyDown .Ke ...

  2. WScript.SendKeys()的sendkeys发送组合键以及特殊字符

    SendKeys.Send("^+{TAB}"); 使用SendKeys将键击和组合键击发送到活动应用程序.此类无法实例化.若要发送一个键击给某个类并立即继续程序流,请使用Send ...

  3. SendKeys发送组合键

    使用: using System.Windows.Forms;//添加命名空间引用 { SendKeys.SendWait("{DOWN}"); ppt.ppt_sendkey(& ...

  4. [No00008B]远程桌面发送“Ctrl+Alt+Delete”组合键调用任务管理器

    向远程桌面发送"Ctrl+Alt+Delete"组合键的两种方法 1.在本地按下Ctrl+Alt+End,可以成功发送"Ctrl+Alt+Delete"组合键! ...

  5. js简单的设置快捷键,hotkeys捕获键盘键和组合键的输入

    设置快捷键 这是一个强健的 Javascript 库用于捕获键盘输入和输入的组合键,它没有依赖,压缩只有只有(~3kb). hotkeys on Githubhotkeys预览 创建 您将需要在您的系 ...

  6. PHP implode() 函数 把数组元素组合为字符串

    http://www.w3school.com.cn/php/func_string_implode.asp PHP implode() 函数 PHP String 函数 实例 把数组元素组合为字符串 ...

  7. Windows Server 2008系统如何取消登录时要按Ctrl+Alt+Delete组合键

    1.点桌面任务栏的“开始-->运行”在弹出的窗口中输入gpedit.msc . 2.输入gpedit.msc后,点击确定即打开了组策略编辑器.在组策略编辑器的左框内依次序展开(点前面的“+”号) ...

  8. Qt获取组合键

    CTRL+Enter发送信息的实现 在现在的即时聊天程序中,一般都设置有快捷键来实现一些常用的功能,类似QQ可以用CTRL+Enter来实现信息的发送. 在QT4中,所有的事件都继承与QEvent这个 ...

  9. 这是高手最常用的第一快捷组合键 - imsoft.cnblogs

    1.锁定电脑 2.要找电脑上的文件时,一般人会先找到“我的电脑”,然后点击打开,而高手总是很酷的,轻轻按下键盘上的Windows键不放然后再按E键,直接打开电脑的资源管理器,而一般人还在慢慢寻找“我的 ...

随机推荐

  1. VC眼中的众筹平台:将改变VC募集基金方式,成为下一个纳斯达克市场

    “一个好的投资平台可能会成为像纳斯达克一样的市场”,这是投资人给予众筹平台的未来憧憬. ”从长远的角度来说,众筹平台可能会改变VC募集基金的方式“,戈壁投资合伙人蒋涛说,“从二级市场看,不论是企业的I ...

  2. OPENCV(3) —— 对XML和YAML文件实现I/O 操作

    XML\YAML文件在OpenCV中的数据结构为FileStorage string filename = "I.xml"; FileStorage fs(filename, Fi ...

  3. shell中IF的用法介绍

    一.语法结构 if [ condition ] then      statements  [elif condition      then statements. ..]  [else       ...

  4. chgrp---改变文件或目录所属的用户组

    chgrp命令用来改变文件或目录所属的用户组.该命令用来改变指定文件所属的用户组.其中,组名可以是用户组的id,也可以是用户组的组名.文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描 ...

  5. 2018 NOIP备战计划

    2018 NOIP目标 (1)刷完紫书数论习题 (2)听51nod讲座和习题,根据其知识结构来备战. (3)刷完紫书动规 (4)初赛前两个星期左右开始复习 刷紫书动规的时候感觉偏难,进步缓慢.应该自己 ...

  6. Windows系统的关机、休眠和睡眠状态究的区别

    原文:Windows系统的关机.休眠和睡眠状态究的区别 相信有些小伙伴跟我一样,对电脑的一些常用操作或名词不太熟悉,今天我们就简单来聊聊电脑的关机.休眠和睡眠状态究竟有何区别吧! 如果你在电脑左下角的 ...

  7. 实验记录三 通用输入输出(GPIO)

    之前把全部程序都跑了一次后,得到了导师下一步的安排. 例如以下: 1.编写一个程序.实如今LCD上显示一个万年历,包含年月日 星期 还有室内的温度.2.编写一个程序,将原来的交通灯改为跑马灯. 期限是 ...

  8. hbase xshell

    用Xshell登陆linux主机后,在hbase shell下死活不能使用backspace和delete删除误输的指令,只得不停退出,重登,仔细输..又错了,再退出,再登,仔细输...又错了...又 ...

  9. 从excel 获取内容 模块:xlrd

    import xlrd # 获取表的对象 excel = xlrd.open_workbook(‘a.excel’) # 获取所有excel里的所有表 table_list = excel.sheet ...

  10. iOS Dev (51)加急审核

    https://developer.apple.com/appstore/contact/? topic=expedite