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 相关文章推荐
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
Ajax PHP 边学边练 之三 数据库
Nov 26 PHP
php调用新浪短链接API的方法
Nov 08 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
php fread读取文件注意事项
Sep 24 PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
Aug 04 PHP
php表单习惯用的正则表达式
Oct 11 PHP
Yii框架日志记录Logging操作示例
Jul 12 PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 PHP
PHP常用函数之获取汉字首字母功能示例
Oct 21 PHP
PHP中echo与print区别点整理
Mar 09 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 远程图片保存到本地的函数类
2008/12/08 PHP
基于php-fpm的配置详解
2013/06/03 PHP
php cli 小技巧
2013/06/03 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
封装好的省市地区联动控件附下载
2007/08/13 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
Vue瀑布流插件的使用示例
2018/09/19 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
python Flask实现restful api service
2017/12/04 Python
python3调用R的示例代码
2018/02/23 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
Python模块future用法原理详解
2020/01/20 Python
Python xlrd excel文件操作代码实例
2020/03/10 Python
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
音乐教学反思
2014/02/02 职场文书
淘宝店铺营销方案
2014/02/13 职场文书
爸爸的花儿落了教学反思
2014/02/20 职场文书
团员年度个人总结
2015/02/26 职场文书
太空授课观后感
2015/06/17 职场文书
读书笔记格式
2015/07/02 职场文书
商业计划书格式、范文
2019/03/21 职场文书