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 展开
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 展开
1个回答
展开全部
不知题主用的 KeyPress 还是 KeyDown/KeyUp 捕捉的。
因为你相当于先输入了一个字母,然后才捕捉到的 KeyDown、KeyUp、KeyPress 事件,执行顺序是:
KeyDown (此时已经输入了)→ KeyUp → KeyPress
如果是 KeyPress 事件,在结尾增加:
e.Handled = true; // 取消刚刚的按键输入
如果是 KeyDown、KeyUp 事件,那么禁用掉 textBox 的输入(ReadOnly=true;)即可。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询