2017-02-16 13 views
1

キーボード(WPF、C#)によるテキストボックス入力の空白、空白("_"キーボードで入力したテキストボックスから空白( "_")文字を使用できないようにする方法

私はコードで試してみてください。

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

が、コードのこの部分は、すべての文字ではなくスペースを禁止します。

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

今、あなたのテキストボックスは無視されますスペース:

+0

また、私はtryを試してみましたが、何も変わっていません。テキストボックスなどは、テキストボックス内のスペースを受け入れる – WPFwtf

+0

[Dublicate](http://stackoverflow.com/questions/10410882/how-can-i-modify-this-regular-expression-to-not-allow-white-spaces )? – Shakra

+3

「KeyPress」イベントを使用し、Keyが32またはKey.Spaceの場合、e.Handled = true; –

答えて

3

あなたはPreviewKeyDownハンドラを追加することができます。

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 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を参照してください、あまりにも。

関連する問題