Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从键盘输入的文本框中禁止空格、空白、(“uquot;”)字符_C#_Wpf_Keypress - Fatal编程技术网

C# 如何从键盘输入的文本框中禁止空格、空白、(“uquot;”)字符

C# 如何从键盘输入的文本框中禁止空格、空白、(“uquot;”)字符,c#,wpf,keypress,C#,Wpf,Keypress,如何禁止通过键盘(WPF,C)输入的文本框中出现空格、空白(“\ucode>)字符 我按代码尝试: Regex regex = new Regex(@"^[A-Za-z0-9\[\]/!$%^&*()\-_+{};:'£@#.?]*$"); 但这部分代码不允许所有字符,但不允许空格。您可以添加PreviewKeyDown处理程序: private void textBox_PreviewKeyDown(object sender, KeyEventArgs e) { if (

如何禁止通过键盘(WPF,C)输入的文本框中出现空格、空白(
“\ucode>)字符

我按代码尝试:

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

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

您可以添加
PreviewKeyDown
处理程序:

private void textBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Space)
    {
        e.Handled = true;
    }
}

现在,您的文本框将忽略空格。

根据您的目标,另一个选项是处理
预览输出:

 {
      //...
      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 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;
    }

在这种情况下,请参见。

我也尝试使用␣ , 但一切都没有改变。文本框等是否接受文本框中的空格?如果您想在键入时这样做,请。。。使用
KeyPress
事件,如果Key为32或Key.Space,则e.Handled=true<代码>\u
是下划线,不是空白。PreviewTimeput不会在空格上触发。第一个解决方案行不通。