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 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
10 个经典PHP函数
Oct 17 PHP
20个2014年最优秀的PHP框架回顾
Oct 22 PHP
一个经典实用的PHP图像处理类分享
Nov 18 PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 PHP
php创建多级目录的方法
Mar 24 PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 PHP
php array_slice 取出数组中的一段序列实例
Nov 04 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
Dec 02 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 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中的MVC模式运用技巧
2007/05/03 PHP
php上传文件的增强函数
2010/07/21 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
js 幻灯片的实现
2011/12/06 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
简单介绍Python中的readline()方法的使用
2015/05/24 Python
python实现单向链表详解
2018/02/08 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
python视频按帧截取图片工具
2019/07/23 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
外语系毕业生找工作的求职信
2013/11/28 职场文书
校园之声广播稿
2014/01/31 职场文书
数控个人求职信范文
2014/02/03 职场文书
《我的信念》教学反思
2014/02/15 职场文书
学校门卫岗位职责
2014/03/16 职场文书
复兴之路展览观后感
2015/06/02 职场文书
植树节新闻稿
2015/07/17 职场文书