我正在构建一个 Windows 窗体应用程序,并希望禁止用户在TextBox
中输入空格和其他空格。我不想在发送带有"您进入空间"或类似消息的表单后检查它。我不想使用这个:
protected override void OnKeyDown(KeyEventArgs e)
因为我必须将按下的键与所有可能的空格进行比较。有没有办法将TextBox
设置为仅接受非空格的字符?
龙(空格(可以通过两种方式渗透到你的池塘(Textbox
- 通过按空格
- 通过更改
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;
}