Ich habe nach einer Möglichkeit gesucht, ein TextBox
Format zu haben, während der Benutzer Daten eingibt.Auto Vollständige Formatierung für TextBox?
Ich habe einen Hack gemacht, das tut, was ich will, aber es ist ein bisschen pingelig durch Dinge wie, wenn Sie versehentlich zwei Tasten drücken, auf einmal, die mit den if
Aussagen schrauben kann und bei dem Versuch, die Zeichenfolge über Delete Key
durch das löschen Benutzer.
Wie auch immer, das ist nicht das Problem, und das ist der Code, den ich jetzt benutze:
die Methoden dieser Klasse aufrufen, Die erste Methode fügt Komma auf den String und die zweite Methode überprüft, ob ein Komma Am Ende, wenn der Benutzer das Tippen beendet hat.
class BonusData
{
public class DoDataTextBox
{
public static void AutoComplete(TextBox textBox, int counter)
{
if (textBox.Text.Length - counter == 3)
{
textBox.Text = textBox.Text + ",";
textBox.SelectionStart = textBox.Text.Length;
}
else if (textBox.Text.Length - counter == 7)
{
textBox.Text = textBox.Text + ",";
textBox.SelectionStart = textBox.Text.Length;
}
else if (textBox.Text.Length - counter == 11)
{
textBox.Text = textBox.Text + ",";
textBox.SelectionStart = textBox.Text.Length;
}
}
public static void CheckLastCharacter(TextBox textBox)
{
if (textBox.Text.Length < 2) return;
if (textBox.Text.Substring(textBox.Text.Length - 1) != ",") return;
{
textBox.Text = textBox.Text.Substring(0, textBox.Text.Length - 1);
}
}
}
}
Und die Event-Handler,
private void SecondMonthRowOne_OnKeyUp(object sender, KeyEventArgs e)
{
int counter = 0;
if (IsText)
{
counter = 1;
}
BonusData.DoDataTextBox.AutoComplete((TextBox)sender, counter);
}
private void SecondMonthRowOne_OnGotFocus(object sender, RoutedEventArgs e)
{
if (e.ToString() != String.Empty) return;
IsText = true;
}
private void SecondMonthRowOne_OnLostFocus(object sender, RoutedEventArgs e)
{
BonusData.DoDataTextBox.CheckLastCharacter((TextBox)sender);
IsText = false;
}
, die ein Ergebnis wie dieses gibt,
999.999.999
Wie ich schon sagte, es 98% der Zeit arbeitet, aber ich hatte gehofft, dass es einen anderen Weg gibt, dies in WPF zu tun. Ich habe weit und breit gesucht, aber ich weiß nicht einmal, wie so etwas heißen soll.
Gibt es einen besonderen Grund, dass Sie eine TextBox anstelle einer ComboBox mit 'IsEditable =" True "' verwenden? – lokusking
@lokusking, vergib meine Unwissenheit, aber was ist der Vorteil davon in dieser Situation? Danke – KyloRen
Mein schlechtes. Deine Frage falsch gelesen. Ich dachte zuerst, Sie wollen eine Art vordefinierte Auswahl wie in den alten Tagen Winforms 'Autocomplete – lokusking