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 相关文章推荐
windows xp下安装pear
Dec 02 PHP
用PHP读取flv文件的播放时间长度
Sep 03 PHP
php下清空字符串中的HTML标签的代码
Sep 06 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
PHP5中实现多态的两种方法实例分享
Apr 21 PHP
php采用ajax数据提交post与post常见方法总结
Nov 10 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
php批量删除操作代码分享
Feb 26 PHP
PHP实现验证码校验功能
Nov 16 PHP
PHP+mysql实现的三级联动菜单功能示例
Feb 15 PHP
基于php+MySql实现学生信息管理系统实例
Aug 04 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计算两个日期相差天数的方法
2015/03/14 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
jQuery extend()详解及简单实例
2017/05/06 jQuery
详解Angular2 之 结构型指令
2017/06/21 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
python黑魔法之编码转换
2016/01/25 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
使用python3构建文件传输的方法
2019/02/13 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
Python定义一个Actor任务
2020/07/29 Python
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
Servlet面试题库
2015/07/18 面试题
内业资料员岗位职责
2014/01/04 职场文书
给客户的道歉信
2014/01/13 职场文书
CAD制图人员的自荐信
2014/02/07 职场文书
团日活动总结报告
2014/06/25 职场文书
机关副主任个人四风问题整改措施
2014/09/26 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript