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 相关文章推荐
也谈截取首页新闻 - 范例
Oct 09 PHP
php空间不支持socket但支持curl时recaptcha的用法
Nov 07 PHP
ThinkPHP CURD方法之field方法详解
Jun 18 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
ThinkPHP中redirect用法分析
Dec 05 PHP
symfony表单与页面实现技巧
Jan 26 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
Mar 26 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
Jan 09 PHP
PHP+Ajax简单get验证操作示例
Mar 02 PHP
Laravel 创建指定表 migrate的例子
Oct 09 PHP
使用PHP开发留言板功能
Nov 19 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 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发送邮件类代码附详细说明
2008/07/10 PHP
用php获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
javascript 命名规则 变量命名规则
2010/02/25 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
js实现随机点名程序
2020/09/17 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
python 读入多行数据的实例
2018/04/19 Python
Django框架模板的使用方法示例
2019/05/25 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
装修施工安全责任书
2014/07/24 职场文书
商场周年庆活动方案
2014/08/19 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS