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);
}
Fragen Sie [maskierte TextBox] (http://stackoverflow.com/questions/481059/where-can-i-find-a-free-masked-textbox-in-wpf) –
Ich glaube es nicht. Ich beginne gerade auf WPF, also benutze ich die STL für alles. –
was meinst du mit STL? –