Ich versuche ein TextBox
in einem C#/Windows Forms-Projekt einzurichten, so dass das Textfeld die Eingabesequenz formatiert, wenn der Benutzer einen Preis mithilfe der Tastatur oder des Nummernblocks eingibt sehe aus wie ein Preis.Reihenfolge der Tastenanschläge in einen Preis umwandeln
Beispiel: Benutzertypen 1-5-0 (abzüglich der Bindestriche), der Textwert des Textfelds ist $ 1,50.
Hier ist der Code, den ich versuche:
private string KeySequence;
// ...
private void TxtValue_KeyPress(object sender, KeyPressEventArgs e)
{
if(char.IsDigit(e.KeyChar))
{
KeySequence += e.KeyChar.ToString();
if (KeySequence.Length > 0)
{
txtValue.Text = "$" + (decimal.Parse(KeySequence)/100).ToString("0.00");
}
}
}
Das Problem ist, wenn ich in einem Wert eingeben, das erste Zeichen ist immer der letzte Schlüssel, die ich von der „$“ gefolgt, eingegeben und die Preis. Wenn ich 150 gebe, erscheint der formatierte Text als: 0$1.50
.
Ich dachte, dies dem KeyDown
Ereignis fällig ist, bevor KeyPress
aufgerufen wird, so habe ich versucht, es für die mit dem Umgang mit Code zu unterdrücken:
private void TxtValue_KeyDown(object sender, KeyEventArgs e)
{
txtValue.Clear();
}
Aber das ist immer noch nicht funktioniert.
Alles, was ich tun kann, um zu verhindern, dass der erste Charakter auftaucht?
Um den Tastendruck abzubrechen, setzen Sie "e.Handled" auf "true" –
Arbeitete wie ein Charme. Vielen Dank! –