c#读取键盘组合键

tianjue1989 2014-10-10 09:50:59
我想实现一个类似有道词典的读取组合快捷键;
比如
1.按下Ctrl,txtbox里显示 Ctrl +
2.按下Alt, txtbox里显示 Alt +
3.按下f, txtbox里显示 F
4.按下Ctrl +f, txtbox里显示 Ctrl + F

可是遇到了这样的问题;
如果输入键盘a->z,会显示aA,bB,...,zZ,显示错误
按Ctrl/Alt + a->z,是正常显示的 Ctrl + a等
可是按Shift +a->z,显示错误,变成了Shift +AA ->Shift + ZZ

我的代码如下

private void txtHotkey_KeyDown(object sender, KeyEventArgs e)
{
// 如果按下组合键CTRL+R
string keydown = "";
if (e.Control)
{
keydown += "Ctrl + ";
}
if (e.Alt)
{
keydown += "Alt + ";
}
if (e.Shift)
{
keydown += "Shift + ";
}
if(e.KeyCode>=Keys.A && e.KeyCode<=Keys.Z)
keydown += e.KeyCode;
this.txtHotkey.Text = keydown;
this.txtHotkey.SelectionStart = this.txtHotkey.Text.Length;
}
...全文
177 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianjue1989 2014-10-10
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
加上 e.Handled = true;
新人比较笨,我网上看的如果是要检测组合键,必须要用keyDown,但是就出现了重复显示的后果。。我也查你说的e.Handled,看到好像相关的帖子都是keyPress的
tianjue1989 2014-10-10
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
加上 e.Handled = true;
e.Handled不是处理keyPress的么?我用keyDown也能用么?可是我加进去试了没反应
threenewbee 2014-10-10
  • 打赏
  • 举报
回复
加上 e.Handled = true;

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧