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.MVC的模板标签系统(五)
Sep 05 PHP
PHP URL地址获取函数代码(端口等) 推荐
May 15 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
Feb 04 PHP
基于PHP magic_quotes_gpc的使用方法详解
Jun 24 PHP
ThinkPHP模板判断输出Defined标签用法详解
Jun 30 PHP
PHP保存带BOM文件的方法
Feb 12 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
Yii多表联合查询操作详解
Jun 02 PHP
PHP+原生态ajax实现的省市联动功能详解
Aug 15 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 PHP
PHP替换Word中变量并导出PDF图片的实现方法
Nov 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 事件机制(2)
2011/03/23 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
2007/05/03 Javascript
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
JS文本框不能输入空格验证方法
2013/03/19 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
node.js入门实例helloworld详解
2015/12/23 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
2017/04/25 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
Python运算符重载用法实例
2015/05/28 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
pandas的resample重采样的使用
2020/04/24 Python
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
实习生自荐信范文
2013/11/13 职场文书
一年级班主任感言
2014/03/08 职场文书
任命书格式
2014/06/05 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
大学生自荐信范文
2015/03/05 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
《狼牙山五壮士》教学反思
2016/02/17 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL