如何通过键盘输入文本框中的空格,空白,(" _")字符串

时间:2017-02-16 09:47:24

标签: c# wpf keypress

如何禁用键盘输入的文本框中的空格,空白,("_")字符(WPF,C#)?

我尝试使用代码:

Regex regex = new Regex(@"^[A-Za-z0-9\[\]/!$%^&*()\-_+{};:'£@#.?]*$"); 

但这部分代码不允许所有字符,但不允许空格。

2 个答案:

答案 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