/// 快捷键相关的类
/// </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. POJ 3622 multiset

    思路: 放一个链接 是我太懒了 http://blog.csdn.net/mars_ch/article/details/52835978 嗯她教的我(姑且算是吧) (一通乱搞就出来了-) //By ...

  2. HDU 4372 Count the Buildings 组合数学

    题意:有n个点上可能有楼房,从前面可以看到x栋楼,从后面可以看到y栋,问楼的位置有多少种可能. 印象中好像做过这个题,

  3. Jesse's Code

    题目描述 Jesse是个数学迷,他最喜欢研究“哥德巴赫猜想”,因此他的计算机密码也都采用素数. 但一直用同一个密码是不安全的,所以他要经常更换他的密码.但他只允许自己的密码中出现某些数字,且密码的每一 ...

  4. c#时间差高精度检查

    两个时间差的高精度检查 static void Main(string[] args) { Console.WriteLine("开始时间:" + DateTime.Now.ToS ...

  5. 通过不修改arc.archives.class.php而保留原有样式调上一篇下

    今天织梦58站长分享一个织梦内容页上下篇的调用方法,估计在大家在仿站的过程中,经常会碰到原站的上下篇很美观,比如如图类似的这种:或,但是用织梦原有调用上下篇的标签来调用,总达不到我们想要的效果,找不到 ...

  6. React开发实时聊天招聘工具 -第二章

    2-1 介绍React开发环境 npm install -g create-react-app xxx npm run eject   来配置webpack 2-2 ES6常用语法 其他 还有一些特性 ...

  7. JAVA基础数据类型

    JAVA的数据类型粗略分两种 1.基本数据类型 整数类型: byte,short,int,long 浮点类型: float,double 字符类型: char 布尔类型: boolean 基本语法格式 ...

  8. C#实现窗口拖动时各个控件同比自己主动放缩大小

    实现方式主要是利用panel控件为主题.对于每一个控件的大小位置和字体这几个属性进行记录. 然后依据窗口改变的大小同一时候放缩. 简要过程例如以下: 1 创建C#窗口程序项目. 2  Panel放置到 ...

  9. ORA-00922: 选项缺失或无效

    1.错误描写叙述 SQL> create table info_stu from select t.stu_id,t.stu_name,t.stu_age from info t; create ...

  10. hq-源码编译

    这里编译整个项目的基本格式是 ./mk + 平台名 +项目名_客户名 +mmm +new 例如 ./mk hq6735_65c_b1k_l1 al811_doov mmm new 编译单个模块 ./m ...