2009-03-13 8 views
1

MaskedTextBoxにユーザーが入力した文字を検証する必要があります。有効な文字は既に入力されているものによって異なります。 IsInputCharOnKeyPressを試してみましたが、IsInputCharにfalseを返しても、OnKeyPressでe.Handledをtrueに設定しても、ボックスのテキストは無効な値に設定されています。キー入力がMaskedTextBoxのテキストを更新しないようにするにはどうすればよいですか?

キー押しがMaskedTextBoxのテキストを更新しないようにするにはどうすればよいですか?

更新:MaskedTextBoxはTextBoxではありません。私はそれが違いを生むべきだとは思わないが、e.Handledが働かなければならないと言う人の数から、おそらくそれはそうである。

答えて

4

これは、textbox1に「x」という文字を入力しません。

char mychar='x'; // your particular character 
    private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (e.KeyChar == mychar) 
      e.Handled = true; 
    } 

EDIT:それは同様にMaskedTextBoxのために動作します。

HTH

+0

これは私がやっていることです。それはMaskedTextBoxなのでおそらく動作していないでしょうか? – Simon

+0

MaskedTextBoxでも同様に動作します。編集されました。 – NileshChauhan

+0

投稿コードがあります.. :) – NileshChauhan

0

KeyPressはそれを行う必要があります。あなたはフォームでこれをやっていますか?またはコントロールで?これは、コピー/ペーストからあなたを保護しません

static void Main() { 
    TextBox tb = new TextBox(); 
    tb.KeyPress += (s, a) => 
    { 
     string txt = tb.Text; 
     if (char.IsLetterOrDigit(a.KeyChar) 
      && txt.Length > 0 && 
      a.KeyChar <= txt[txt.Length-1]) 
     { 
      a.Handled = true; 
     } 
    }; 
    Form form = new Form(); 
    form.Controls.Add(tb); 
    Application.Run(form); 
} 

(唯一の「上昇」の文字ができます)

注こと - あなたにもTextChangedおよび/または検証を見ているかもしれません:たとえば。

+0

私はコントロールしています。 – Simon

関連する問題