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 相关文章推荐
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
Dec 29 PHP
php获取网页中图片、DIV内容的简单方法
Jun 19 PHP
PHP中应该避免使用同名变量(拆分临时变量)
Apr 03 PHP
Yii实现简单分页的方法
Apr 29 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
php实现的debug log日志操作类实例
Jul 12 PHP
PHP会话操作之cookie用法分析
Sep 28 PHP
PHP编写daemon process 实例详解
Nov 13 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
Centos7 Yum安装PHP7.2流程教程详解
Jul 02 PHP
laravel 判断查询数据库返回值的例子
Oct 11 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
js常用数组操作方法简明总结
2014/06/20 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
了解javascript中let和var及const关键字的区别
2019/05/24 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
2020/01/07 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
一个简单的python程序实例(通讯录)
2013/11/29 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
详解如何管理多个Python版本和虚拟环境
2019/05/10 Python
Python 内置变量和函数的查看及说明介绍
2019/12/25 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
英国大码女性时装零售商:Evans
2018/08/29 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
村官工作鉴定评语
2014/01/27 职场文书
《狼》教学反思
2014/03/02 职场文书
初中生期末评语大全
2014/04/24 职场文书
团队精神的演讲稿
2014/05/14 职场文书
先进人物事迹材料
2014/12/29 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
Go归并排序算法的实现方法
2022/04/06 Golang