2009-03-13 4 views
1

Ich muss Zeichen validieren, die vom Benutzer in einem MaskedTextBox eingegeben werden. Welche Zeichen gültig sind, hängt von den bereits eingegebenen Zeichen ab. Ich habe versucht, mit IsInputChar und OnKeyPress, aber ob ich falsch in IsInputChar oder e.Handled in OnKeyPress auf True zurückgegeben, der Text der Box ist immer noch auf den ungültigen Wert festgelegt.Wie verhindere ich, dass ein Tastendruck den Text einer MaskedTextBox aktualisiert?

Wie verhindere ich, dass ein Tastendruck einen MaskedTextBox Text aktualisiert?

UPDATE: MaskedTextBox nicht TextBox. Ich denke nicht, dass das einen Unterschied machen sollte, aber von der Anzahl der Leute, die mir sagen, dass e.Handled funktionieren sollte, vielleicht tut es das auch.

Antwort

4

Dies wird nicht das Zeichen 'x' in textbox1 eingeben.

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

EDIT: Es ist für MaskedTextBox funktioniert auch.

HTH

+0

Das ist, was ich mache. Vielleicht funktioniert es nicht, weil es eine MaskedTextBox ist? – Simon

+0

Es funktioniert auch für MaskedTextBox. bearbeitet. – NileshChauhan

+0

Post ur code dude .. :) – NileshChauhan

0

Die KeyPress sollte es tun; Machst du das im Formular? oder bei der Kontrolle? Zum Beispiel:

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); 
} 

(erlaubt nur „aufsteigend“ Zeichen)

Beachten Sie, dass diese Sie nicht schützen von copy/paste - Sie könnten auf Textchanged suchen und/oder auch zu bestätigen.

+0

Ich mache es bei der Kontrolle. – Simon

Verwandte Themen