C#里面写快捷键设置的代码,调试输入快捷键值,会显示2个值,大小写都显示

一下是我写的在快捷键textBox按下一个键的时候的代码if((e.KeyValue>=33&&e.KeyValue<=36)||(e.KeyValue>=45&&e.K... 一下是我写的在快捷键textBox按下一个键的时候的代码

if ((e.KeyValue >= 33 && e.KeyValue <= 36) || (e.KeyValue >= 45 && e.KeyValue <= 46) ||
(e.KeyValue >= 48 && e.KeyValue <= 57) || (e.KeyValue >= 65 && e.KeyValue <= 90) ||
(e.KeyValue >= 96 && e.KeyValue <= 107) || (e.KeyValue >= 109 && e.KeyValue <= 111) ||
(e.KeyValue >= 186 && e.KeyValue <= 192) ||
(e.KeyValue >= 219 && e.KeyValue <= 222))
{
foreach (Control c in gbBlockKeySet.Controls)
{
Control temp = c as TextBox;
if (temp != null && ((TextBox)temp).Text != "")
{
if (((int)((TextBox)temp).Tag) == e.KeyValue)
{
((TextBox)temp).Text = "";
((TextBox)temp).Tag = Keys.None;
}
}
}
((TextBox)sender).Text = e.KeyCode.ToString();
((TextBox)sender).Tag = (Keys)e.KeyValue;//KeyValue,
}
拷到别的地方去修改试了下,又没问题,把别人的拷过来,改下控件名字,也没问题,找不到原因了。
靠,我找到原因了,textbox属性ReadOnly要设置为true
展开
 我来答
然后去远足
2015-04-15 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2365万
展开全部

不知题主用的 KeyPress 还是 KeyDown/KeyUp 捕捉的。

 

因为你相当于先输入了一个字母,然后才捕捉到的 KeyDown、KeyUp、KeyPress 事件,执行顺序是:

KeyDown (此时已经输入了)→ KeyUp → KeyPress

 

如果是 KeyPress 事件,在结尾增加:

e.Handled = true; // 取消刚刚的按键输入

如果是 KeyDown、KeyUp 事件,那么禁用掉 textBox 的输入(ReadOnly=true;)即可。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式