C# WinForm中实现快捷键自定义设置实例
C# WinForm中实现快捷键自定义设置实例
发布时间:2016-12-29 来源:查字典编辑
摘要:本文源码下载:http://xiazai.jb51.net/201501/tools/cs-key-setting.rar项目开发过程中,需...

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

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

C# WinForm中实现快捷键自定义设置实例1

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

最终的效果如下图所示:

C# WinForm中实现快捷键自定义设置实例2

核心代码如下所示:

复制代码 代码如下:

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教程学习
编程开发子分类