winform调用php接口,C# WinForm中实现快捷键自定义设置实例

本文介绍了如何在项目开发中实现类似有道词典的软件设置中的自定义快捷键功能。通过监听键盘的KeyDown和KeyUp事件,动态更新文本框内容,展示用户按下的组合键。核心代码展示了如何处理Ctrl、Alt、Shift及字母键、数字键的组合,确保快捷键的正确显示。
摘要由CSDN通过智能技术生成

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

72921aef7fae340e474b023555c421b7.png

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

最终的效果如下图所示:

d3e4f7fc49941f1eaeddf1ec6f26086f.png

核心代码如下所示:

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值