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中Object对象的笔记分享
Jun 28 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
php缓存技术详细总结
Aug 07 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
May 12 PHP
Thinkphp无限级分类代码
Nov 11 PHP
WordPress主题制作之模板文件的引入方法
Dec 28 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
PHP实现统计在线人数功能示例
Oct 15 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
Apr 06 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
Drupal简体中文语言包安装教程
2014/09/27 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
Extjs学习笔记之八 继承和事件基础
2010/01/08 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
javascript实现C语言经典程序题
2015/11/29 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
经理职责范文
2013/11/08 职场文书
公司财务总监岗位职责
2013/12/14 职场文书
《郑和远航》教学反思
2014/04/16 职场文书
质量主管工作职责
2014/09/26 职场文书
北京导游词
2015/02/12 职场文书
医院合作意向书范本
2015/05/08 职场文书
房产证明范本
2015/06/19 职场文书
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python