2010-11-26 12 views

答えて

6

マスクされたテキストボックスが正規表現を受け入れた場合、これは簡単ですが、残念ながらそうではありません。

一つの方法(ない非常にきれいとはいえ)あなたは、それは、オプションの手紙?マスクを使用することで行うことができ、あなたがテキストボックスに許可します最大の長さと同じ量を入れ、すなわち

maskedTextBox1.Mask = "????????????????????????????????......."; 

代わりにあなたがマスクの代わりに独自の検証を使用して別の方法は、ここで、KeyPressイベントを処理することにより、文字からのもの以外の任意のキー押下を無視することですので、

void textbox1_Validating(object sender, CancelEventArgs e) 
{ 
    if (!System.Text.RegularExpressions.Regex.IsMatch(textbox1.Text, @"^[a-zA-Z]+$")) 
    { 
     MessageBox.Show("Please enter letters only"); 
    } 
} 

か、まだのような正規表現を使用することができますじぶんの 意見は最善の方法だろう。

private void textbox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"^[a-zA-Z]+$")) 
      e.Handled = true; 
} 
+0

をこれを使用することができますうん、私はそれを見つけたが、私はそれを書い避けたかったです。 :Pありがとう! –

+0

私はちょうどヘルパーメソッドを作成します。ありがとう! –

+2

'if(!System.Text.RegularExpressions.Regex.IsMatch(textbox1.Text、@"^[a-zA-Z] + $ "))' KeyPressイベントで動作しません。 'textbox1.Text'の代わりに' e.KeyChar.ToString() 'を使用してください – Shell

2

あなただけの文字を入力したい場合は、KeyPressイベントに

if (!char.IsLetter(e.KeyChar) && !char.IsControl(e.KeyChar)) //The latter is for enabling control keys like CTRL and backspace 
{ 
    e.Handled = true; 
} 
関連する問題