C# WinForm中实现快捷键自定义设置实例


Posted in PHP onJanuary 23, 2015

本文源码下载:http://xiazai.3water.com/201501/tools/cs-key-setting.rar

项目开发过程中,需要实现类似有道词典的软件设置中的自定义快捷键功能,如下图所示:

C# WinForm中实现快捷键自定义设置实例

当我们相继按下Ctrl+Alt+M的时候,软件就会自动将快捷键显示在文本框中。

最终的效果如下图所示:

C# WinForm中实现快捷键自定义设置实例

核心代码如下所示:

private void keyDown(object sender, KeyEventArgs e)

{

    StringBuilder keyValue = new StringBuilder();

    keyValue.Length = 0;

    keyValue.Append("");

    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 >= 33 && e.KeyValue <= 40) ||

        (e.KeyValue >= 65 && e.KeyValue <= 90) ||   //a-z/A-Z

        (e.KeyValue >= 112 && e.KeyValue <= 123))   //F1-F12

    {

        keyValue.Append(e.KeyCode);

    }

    else if ((e.KeyValue >= 48 && e.KeyValue <= 57))    //0-9

    {

        keyValue.Append(e.KeyCode.ToString().Substring(1));

    }

    this.ActiveControl.Text = "";

    //设置当前活动控件的文本内容

    this.ActiveControl.Text = keyValue.ToString();

}
private void keyUp(object sender, KeyEventArgs e)

{

    string str = this.ActiveControl.Text.TrimEnd();

    int len = str.Length;

    if (len >= 1 && str.Substring(str.Length - 1) == "+")

    {

        this.ActiveControl.Text = "";

    }

}

e.KeyValue和字符的对应关系

字符 e.KeyValue
a-z|A-Z 65-90
F1-F12 112-123
0-9 48-57
PageUp 33
PageDown 34
End 35
Home 36
左(←) 37
上( ↑ ) 38
右(→) 39
下( ↓ ) 40

接着,为textbox控件分别设置_KeyDown和_KeyUp事件,并在其中调用以上2个核心函数。

如下所示:

private void textBox1_KeyDown(object sender, KeyEventArgs e)

{

    keyDown(sender, e);

}
private void textBox1_KeyUp(object sender, KeyEventArgs e)

{

    keyUp(sender, e);

}

PHP 相关文章推荐
防止MySQL注入或HTML表单滥用的PHP程序
Jan 21 PHP
php将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
理解和运用PHP中的多态性[译]
Aug 02 PHP
PHP在线生成二维码(google api)的实现代码详解
Jun 04 PHP
php 如何获取数组第一个值
Aug 06 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
PHP编译安装时常见错误解决办法
May 28 PHP
PHP中foreach()用法汇总
Jul 02 PHP
利用php做服务器和web前端的界面进行交互
Oct 31 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
Jun 16 PHP
PHP实现随机发放扑克牌
Apr 21 PHP
如何在PHP中读写文件
Sep 07 PHP
对PHP PDO的一些认识小结
Jan 23 #PHP
smarty模板引擎中自定义函数的方法
Jan 22 #PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
Jan 22 #PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
Jan 22 #PHP
smarty模板引擎从配置文件中获取数据的方法
Jan 22 #PHP
smarty模板引擎从php中获取数据的方法
Jan 22 #PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 #PHP
You might like
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
关于js类的定义
2011/06/28 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
python实现dict版图遍历示例
2014/02/19 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
python实现归并排序算法
2018/11/22 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
高中生的自我评价
2014/03/04 职场文书
团代会开幕词
2015/01/28 职场文书
保研导师推荐信
2015/03/25 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
图文详解Nginx版本平滑升级方案
2021/09/15 Servers