1
我想创建一个文本框只接受字母和数字,并丢弃所有的特殊字符。我需要这个输入一个有效的文件名,没有扩展名。 我使用下面的代码:SIP:Key.Shift没有检测到
private void txtFName_KeyDown(object sender, KeyEventArgs e)
{
if (!(((e.Key >= Key.A) && (e.Key <= Key.Z)) || ((e.Key >= Key.D0) && (e.Key <= Key.D9)) || (e.Key == Key.Shift) || (e.Key == Key.Back)))
{
e.Handled = true;
MessageBox.Show("No Special Characters are Allowed!");
}
}
不幸的是,“按键响应”事件是不存在的,所以我想通了,这是实现我在做什么是最好的方式。
我现在面临的问题是:
正如你可以在上面的代码中看到,我已经采取了“Shift”键按下的照顾,但是当我按下“Shift”键在SIP中, “不允许特殊字符”消息框弹出3次,然后我可以键入大写字母!所以这基本上阻止我输入任何大写字母。
更糟糕的是,它接受所有字符!@#$%^ & *()。可能是因为它将这些数字从0-9中检测出来。看起来,关键代码在2和@,3和#等方面的返回值相同。这是非常奇怪的行为!而且我甚至无法用上述技术使用下划线键。
这样的行为在专业App中显然是不可接受的。
如何创建仅接受字母,数字和下划线并丢弃所有其他字符的文本框? 此外,“Shift”键未检测到问题吗?