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 相关文章推荐
第十二节 类的自动加载 [12]
Oct 09 PHP
用cookies来跟踪识别用户
Oct 09 PHP
php写的简易聊天室代码
Jun 04 PHP
PHP命名空间(namespace)的动态访问及使用技巧
Aug 18 PHP
PHP中mysql_field_type()函数用法
Nov 24 PHP
PHP实现简单汉字验证码
Jul 28 PHP
thinkphp命名空间用法实例详解
Dec 30 PHP
CI框架实现cookie登陆的方法详解
May 18 PHP
PHP 验证身份证是否合法的函数
Feb 09 PHP
php获取今日开始时间和结束时间的方法
Feb 27 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
在Laravel 的 Blade 模版中实现定义变量
Oct 14 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自带方法验证邮箱是否存在
2016/02/01 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
JS性能优化实现方法及优点进行
2020/08/30 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
python实现划词翻译
2020/04/23 Python
Python的Django框架使用入门指引
2015/04/15 Python
Python字符串转换成浮点数函数分享
2015/07/24 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
Python 发送邮件方法总结
2020/08/10 Python
利用HTML5 Canvas API绘制矩形的超级攻略
2016/03/21 HTML / CSS
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
销售文员的岗位职责
2013/11/20 职场文书
部门年终奖分配方案
2014/05/07 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
JAVA API 实用类 String详解
2021/10/05 Java/Android