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 正则学习实例
Jul 30 PHP
PHP 文件上传功能实现代码
Jun 24 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
php中邮箱地址正则表达式实现与详解
Apr 24 PHP
php分页函数完整实例代码
Sep 22 PHP
浅谈thinkphp的实例化模型
Jan 04 PHP
PHP+MySQL修改记录的方法
Jan 21 PHP
微信支付开发动态链接Native支付
Jul 12 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
php写入mysql中文乱码的实例解决方法
Sep 17 PHP
php post换行的方法
Feb 03 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
Apr 27 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
我的论坛源代码(十)
2006/10/09 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
php mysql 封装类实例代码
2016/09/18 PHP
javascript 面向对象编程 function也是类
2009/09/17 Javascript
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
js实现按钮开关单机下拉菜单效果
2018/11/22 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
Vue3不支持Filters过滤器的问题
2020/09/24 Javascript
python if not in 多条件判断代码
2016/09/21 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
2012/02/21 面试题
单位成立周年感言
2014/01/26 职场文书
分家协议书
2014/04/21 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
合作意向书
2014/07/30 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
Django+Celery实现定时任务的示例
2021/06/23 Python