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实现维护文件代码
Jun 14 PHP
PHP游戏编程25个脚本代码
Feb 08 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
php数据类型判断函数有哪些
Sep 23 PHP
PHP生成sitemap.xml地图函数
Nov 13 PHP
解决Codeigniter不能上传rar和zip压缩包问题
Mar 07 PHP
php实现通过ftp上传文件
Jun 19 PHP
php获取文件类型和文件信息的方法
Jul 10 PHP
Yii清理缓存的方法
Jan 06 PHP
Zend Framework入门知识点小结
Mar 19 PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 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利用curl抓取新浪微博内容示例
2014/04/27 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
JavaScript中Math对象使用说明
2008/01/16 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
vue异步加载高德地图的实现
2018/06/19 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
python海龟绘图实例教程
2014/07/24 Python
Python中变量交换的例子
2014/08/25 Python
python类继承与子类实例初始化用法分析
2015/04/17 Python
在python的类中动态添加属性与生成对象
2016/09/17 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
python批量图片处理简单示例
2019/08/06 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
利用python实现汉诺塔游戏
2021/03/01 Python
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
客户服务经理岗位职责
2014/01/29 职场文书
家长对孩子评语
2014/01/30 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
入党心得体会
2019/06/20 职场文书