我正在构建 Windows窗体应用程序,并希望禁止用户将空格和其他空白输入TextBox
中。在发送带有“您输入了空格”之类的消息的表格后,我不想检查它。我不想使用这个:
protected override void OnKeyDown(KeyEventArgs e)
因为我必须将按下的键与所有可能的空格进行比较。
有什么方法可以将TextBox
设置为仅接受不是空格的字符?
答案 0 :(得分:6)
龙(空白)可以通过以下两种方式进入您的池塘(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)));
答案 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;
}