如何禁用键盘输入的文本框中的空格,空白,("_"
)字符(WPF,C#)?
我尝试使用代码:
Regex regex = new Regex(@"^[A-Za-z0-9\[\]/!$%^&*()\-_+{};:'£@#.?]*$");
但这部分代码不允许所有字符,但不允许空格。
答案 0 :(得分:3)
您可以添加PreviewKeyDown
处理程序:
private void textBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space)
{
e.Handled = true;
}
}
现在您的文本框将忽略空格。
答案 1 :(得分:0)
根据您的目标,另一个选项是处理PreviewTextInput
:
{
//...
TextBox tb = new TextBox();
tb.PreviewTextInput += Tb_PreviewTextInput;
}
private void Tb_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (e.Text == " ")
e.Handled = true;
base.OnPreviewTextInput(e);
}
例如,如果要停止复制粘贴空间,建议使用此方法。
另一方面,如果您指向要在插入TextBox之前从文本中删除所有空格的情况,则以下内容可能有所帮助:
// ...
TextBox tb = new TextBox();
tb.TextChanged += Tb_TextChanged;
// ...
bool _changing;
private void Tb_TextChanged(object sender, TextChangedEventArgs e)
{
if (_changing)
return;
_changing = true;
TextBox tb = (TextBox)sender;
string tx = tb.Text;
while (tx.Contains(" "))
tx = tx.Replace(" ", string.Empty);
tb.Text = tx;
_changing = false;
}
在这种情况下,请参阅this link。