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实现Ftp用户的在线管理的代码
Mar 06 PHP
PHP strtr() 函数使用说明
Nov 21 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
php使用strtotime和date函数判断日期是否有效代码分享
Dec 25 PHP
php生成短网址示例
May 05 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
php对接java现实加签验签的实例
Nov 25 PHP
简述php环境搭建与配置
Dec 05 PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 PHP
mac pecl 安装php7.1扩展教程
Oct 17 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
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
javascript 验证日期的函数
2010/03/18 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python实现简单socket通信的方法
2016/04/19 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
python生成密码字典的方法
2018/07/06 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
python实现经典排序算法的示例代码
2021/02/07 Python
学生会竞选自荐信
2013/10/12 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
导游个人求职信范文
2014/03/23 职场文书
人事代理委托书
2014/09/27 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
庆七一晚会主持词
2015/06/30 职场文书
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript