C# WinForm中实现快捷键自定义设置实例_php技巧

本文源码下载:http://xiazai.jb51.net/201501/tools/cs-key-setting.rar

项目开发过程中,需要实现类似有道词典的软件设置中的自定义快捷键功能,如下图所示:

当我们相继按下Ctrl+Alt+M的时候,软件就会自动将快捷键显示在文本框中。

最终的效果如下图所示:

核心代码如下所示:

复制代码 代码如下:

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);
}

时间: 2024-10-29 12:24:27

C# WinForm中实现快捷键自定义设置实例_php技巧的相关文章

PHP中ini_set与ini_get用法实例_php技巧

本文实例讲述了PHP中ini_set与ini_get的用法.分享给大家供大家参考.具体如下: PHP ini_set函数. PHP ini_set函数是设置选项中的值,在执行函数后生效,脚本结束的时候,这个设置也失效.不是所有的选项都能被该函数设置的.具体那些值能够设置,可以查看手册中的列表. 就是能够设置php.ini中的选项值比如,display_error选项关闭了,但是你要显示程序中的错误信息,方便你调试程序,那么就可以使用PHP ini_set函数: 复制代码 代码如下: ini_se

php array_slice 取出数组中的一段序列实例_php技巧

php array_slice 函数在数组中根据条件取出一段值,并返回.如果数组有字符串键,所返回的数组将保留键名.本文章通过实例向大家讲解array_slice 函数的使用方法. php array_slice - 从数组中取出一段 array_slice 函数基本语法: array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] ) array_s

PHP中file_get_contents高級用法实例_php技巧

本文实例讲述了PHP中file_get_contents高级用法,分享给大家供大家参考.具体分析如下: 首先解决file_get_contents的超时问题,在超时返回错误后就象js中的settimeout那样进行一次尝试,错误超过3次或者5次后就确认为无法连线伺服器而彻底放弃. 这裡就简单介绍两种解决方法: 一.增加超时的时间限制 注意:set_time_limit只是设定你的PHP程式的超时时间,而不是file_get_contents函数读取URL的超时时间. 我一开始以为set_time

PHP中生成UUID自定义函数分享_php技巧

UUID 全称是 Universally unique identifier,它是一种识别符,使用任意的计算机都可以生成,不需要一个中央数据库进行管理,即可以保证几乎没有重复的几率.而 UUID 的值域之大,据说给世界上每一粒沙子分配一个 UUID,也不会有重复的. 最近在改 WordPress 的代码,需要用到 UUID.但是,PHP 中居然没有生成 UUID 的函数,只好自己写一个. if (!function_exists('com_create_guid')) { function co

详解PHP中foreach的用法和实例_php技巧

在PHP中经常会用到foreach的使用,而要用到foreach,就必须用到数组.因此,在这篇文章中,我们一边讲数组,一边讲foreach. foreach有两种语法: 第一种:遍历给定的 数组语句 array_expression 数组.每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元). foreach (array_expression as $value) 第二种:同上,同时当前单元的键名也会在每次循环中被赋给变量 $key.

浅析php中jsonp的跨域实例_php技巧

我们现在www.test.com这个域名下面有这么个html文件testjsonp.html: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtm

Apache中php.ini的设置方法_php技巧

例如: 复制代码 代码如下: 1 LoadModule php5_module "D:/wamp/bin/php/php5.4.3/php5apache2_2.dll"2 PHPIniDir "D:\wamp\bin\php\php5.4.3" 这样Apache使用的php.ini和PHP的DLL都是加载的5.4.3版本的.让IIS使用环境变量中的php.ini. 另外在wamp启动的时候,经常会提示类似 "无法定位程序输入点 php_checkuid 于

模拟javascript中的sort排序(简单实例)_javascript技巧

一.javascript中sort对数据进行排序的原理 sort() 方法对数组的元素做原地的排序,并返回这个数组. sort 可能不是稳定的.默认按照字符串的Unicode码位点排序; 语法:arr.sort([compareFunction]) 参数 compareFunction 可选.用来指定按某种顺序进行排列的函数.如果省略,元素按照转换为的字符串的诸个字符的Unicode位点进行排序. 如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前: 如

js动态添加的DIV中的onclick事件简单实例_javascript技巧

最简单的是这样: <input type="button" onclick="alert(this.value)" value="我是 button" /> 动态添加onclick事件: <input type="button" value="我是 button" id="bu"> <script type="text/javascript&quo