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与javascript的两种交互方式
Oct 09 PHP
介绍几个array库的新函数 php
Dec 29 PHP
Php 构造函数construct的前下划线是双的_
Dec 08 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
PHP删除目录及目录下所有文件的方法详解
Jun 06 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
Jan 14 PHP
JavaScript创建命名空间的5种写法
Jun 24 PHP
php获取随机数组列表的方法
Nov 13 PHP
php防止用户重复提交表单
Nov 02 PHP
php处理静态页面:页面设置缓存时间实例
Jun 22 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
May 15 PHP
TP5多入口设置实例讲解
Dec 15 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函数
2011/05/31 PHP
PHP几个数学计算的内部函数学习整理
2011/08/06 PHP
PHP多文件上传类实例
2015/03/07 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
深入理解jQuery.data() 的实现方式
2016/11/30 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
layui--js控制switch的切换方法
2019/09/03 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
人生苦短我用python python如何快速入门?
2018/03/12 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
Python字符串及文本模式方法详解
2020/09/10 Python
详解python的super()的作用和原理
2020/10/29 Python
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
2014各大专业毕业生自我评价
2014/09/17 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript