2017-05-15 3 views
-1

Ich schreibe ein WPF-Programm, in dem ich versuche, eine Telefonnummer in ein Textfeld einzugeben, das im xxx-xxx-xxxx-Format vorliegen muss. Ich habe ein Tastendruckereignis, das die neuen Eingaben analysiert und sicherstellt, dass sie korrekt sind, fügt die neue Zahl oder den Wert '-' in die Textbox ein und kehrt zum Warten auf den nächsten Tastendruck zurück. Mein Problem ist folgendes:Alter Textboxwert wird nicht überschrieben oder gelöscht

Textfeld zeigt nichts

Tastendruckereignis Nummer 5

textBox parst

Anruf TextBox.Text = "5";

Exit-Ereignis

Textfeld zeigt mit Cursor 55 Handhabung zwischen den 5s

Jetzt bin ziemlich sicher bin, weiß ich, dass das Feld zu aktualisieren, aber die tatsächliche eingegebene Text ist nicht zurückgesetzt wird. Wie entferne ich den Tastendruck, so dass das Textfeld nur anzeigt, wofür ich es eingestellt habe?

Vielen Dank für Ihre Zeit.

Edit: Hier ist der aktuelle Code, wenn es hilft.

private void PhoneNumberBox_KeyDown(object sender, KeyEventArgs e) 
    { 
     String keyString = e.Key.ToString(); 
     char keyPress = 'x'; 

     if (keyString.Length == 2 && keyString[0] == 'D') 
      keyPress = keyString[1]; 


     TextBox textBox = sender as TextBox; 

     if ((keyPress > 47 && keyPress < 58) || keyPress == '-') 
     { 
      int length = _textBoxText.Length; 

      switch (length) 
      { 
       case 0: 
       case 1: 
       case 2: 
       case 4: 
       case 5: 
       case 6: 
       case 8: 
       case 9: 
       case 10: 
       case 11: 
        { 
         if (keyPress != '-') 
          _textBoxText += keyPress; 
         break; 
        } 
       case 3: 
       case 7: 
        { 
         if (keyPress == '-') 
          _textBoxText += keyPress; 
         break; 
        } 
      } 
      textBox.Clear(); 

      textBox.Text = _textBoxText; 
     } 
     else 
      Invalid_Entry(textBox); 
    } 
+1

Fragen Sie [maskierte TextBox] (http://stackoverflow.com/questions/481059/where-can-i-find-a-free-masked-textbox-in-wpf) –

+0

Ich glaube es nicht. Ich beginne gerade auf WPF, also benutze ich die STL für alles. –

+0

was meinst du mit STL? –

Antwort

0

Mein Problem war die Tatsache, dass das Ereignis nicht erkannte, dass es behandelt wurde. Alles was ich tun musste war:

e.Handled = true;

und mein Problem ging weg.

+0

Die Veranstaltung kann es nicht realisieren, musste man sagen. –

Verwandte Themen