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 相关文章推荐
一个显示天气预报的程序
Oct 09 PHP
PHP4在WinXP下IIS和Apache2服务器上的安装实例
Oct 09 PHP
令PHP初学者头疼十四条问题大总结
Nov 12 PHP
PHP与SQL注入攻击防范小技巧
Sep 16 PHP
解析PHP 使用curl提交json格式数据
Jun 29 PHP
phpstorm编辑器乱码问题解决
Dec 01 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
Jan 08 PHP
PHP实现基于mysqli的Model基类完整实例
Apr 08 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
Jun 20 PHP
php面试实现反射注入的详细方法
Sep 30 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 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 500报错的快速解决方法
2016/12/14 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
ES6中Promise的使用方法实例总结
2020/02/18 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
对教师的评语
2014/04/28 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
班委竞选稿范文
2015/11/21 职场文书
小学科学课教学反思
2016/02/23 职场文书
小学生优秀作文范文(六篇)
2019/07/10 职场文书
docker-compose部署Yapi的方法
2022/04/08 Servers
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python