禁止C#textBox中的空格

时间:2019-07-15 11:26:32

标签: c# winforms

我正在构建 Windows窗体应用程序,并希望禁止用户将空格和其他空白输入TextBox中。在发送带有“您输入了空格”之类的消息的表格后,我不想检查它。我不想使用这个:

    protected override void OnKeyDown(KeyEventArgs e)

因为我必须将按下的键与所有可能的空格进行比较。 有什么方法可以将TextBox设置为仅接受不是空格的字符?

2 个答案:

答案 0 :(得分:6)

龙(空白)可以通过以下两种方式进入您的池塘(Textbox):

  1. 按空格键
  2. 通过更改Text(例如,借助复制+粘贴)。

因此,我们必须关闭两个漏洞( WinForms 代码):

System.Text.RegularExpressions;

...

private void MyTextBox_KeyPress(object sender, KeyPressEventArgs e) {
  // we don't accept whitespace characters
  if (char.IsWhiteSpace(e.KeyChar)) 
    e.Handled = true;
}

private void MyTextBox_TextChanged(object sender, EventArgs e) {
  // We remove whitespaces from text inserted 
  (sender as TextBox).Text = Regex.Replace((sender as TextBox).Text, @"\s+", "");
}

如果您不想使用正则表达式,请尝试 Linq

(sender as TextBox).Text = string.Concat((sender as TextBox)
  .Text
  .Where(c => !char.IsWhiteSpace(c)));

答案 1 :(得分:-1)

在如下所示的KeyPress或KeyDown事件上使用正则表达式,

if (!Regex.Match(TextBox.Text, "^[a-zA-Z]+$").Success)  
{  
    // first name was incorrect  
    MessageBox.Show("Invalid first name", "Message", 
    MessageBoxButton.OK,MessageBoxImage.Error);  
    TextBox.Focus();  
    return;  
}