禁止 C# 文本框中的空格



我正在构建一个 Windows 窗体应用程序,并希望禁止用户在TextBox中输入空格和其他空格。我不想在发送带有"您进入空间"或类似消息的表单后检查它。我不想使用这个:

    protected override void OnKeyDown(KeyEventArgs e)

因为我必须将按下的键与所有可能的空格进行比较。有没有办法将TextBox设置为仅接受非空格的字符?

龙(空格(可以通过两种方式渗透到你的池塘(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)));

在按键或按键事件中使用正则表达式,如下所示,

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;  
}  

最新更新