2014-11-02 122 views
1

我试图阻止用户输入文本字段中的空格键。我有这个代码。防止特殊字符输入c#

private void FirstNameBox_KeyDown(object sender, KeyEventArgs e) 
     { 
      //////////MessageBox.Show(e.KeyValue.ToString()); 
      //Now check to see if the key pressed is a space 
      if ((e.KeyValue == 32)) 
      { 
       MessageBox.Show("Please Enter only first name.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); 
       //Stop the key registering 
       e.Handled = true; 
       e.SuppressKeyPress = true; 
      } 
      else 
      { 
       //allow enter 
      } 
     } 

其中32是空格按钮的关键值。但现在对我来说这并不适用。我以前在这个代码中使用了完美的数字条目......尝试它的空间,但不工作。有任何想法吗??

+0

你有更大的问题,其实。那些拥有多个名字或多部分名字的人(如Mary Anne)呢?此外,还有更多的空格而不是“Space”键 - “Tab”呢?或者_represent_(看起来像)空格但不是传统空格(可能在非ASCII集中找到)的字符? – 2014-11-02 08:09:28

+0

我有三个输入字段..名字,中间名和姓....他们可以在中间的名字字段中输入其他名称但第一和最后一个名字,我只希望他们输入一个字.. – LeCdr 2014-11-02 08:30:46

+0

哎哟。根据您使用的其他内容,您可能遇到法律文件等问题(其中,他们报告的名字与您报告的名字不同,因为他们通常不使用全名) 。这也可以让你的顾客恼火。那么像德国人,你可能会有什么特拉普或什么的东西呢?有些文化没有“最后”(或家庭)的名字。你在做什么,你要求单名?像这样的问题是为什么有些人建议只使用一个“名称”字段。 – 2014-11-02 08:52:16

回答

1
if (e.KeyCode == Keys.Space) 
{ 
    // Do something here. 
} 
0

很难说,因为你没有给予太多的细节。例如:WPF/Winforms?哪个版本?为什么?你有什么限制?等等......

在任何情况下,你不应该手动在任何情况下,如果你使用WPF/MVVM这样做......,一个好方法是使用验证这一点。

针对上述情况,你可以看看验证一节中的:The big mvvm template