2016-07-21 16 views
1
private void TextBox_TextChanged(object sender, EventArgs e) 
{ 
string value = TextBox.Text.Replace(",", ""); 
double dbl; 
if (double.TryParse(value, out dbl)) 
{ 
    TextBox.TextChanged -= TextBoxTextChanged; 
    TextBox.Text = string.Format("{0:#,#0}", dbl); 
    TextBox.SelectionStart = TextBox.Text.Length; 
    TextBox.TextChanged += TextBoxTextChanged; 
} 

}Calculator - Tausendertrennzeichen durch Komma in C#

ich über Code-Rechner für die Herstellung verwendet. Ich möchte Ergebnis Komma mit Dezimalwert erhalten. Ich möchte 1.234.1234 in die TextBox eingeben, aber ich kann nicht 1.234.1234 in das Textfeld eingeben. Ich meine Komma mit Dezimalwert nicht bekommen.

Kann mir bitte jemand helfen, dieses Problem zu lösen?

+1

Ich kann nicht verstehen, warum Sie einen Event-Handler in der gleichen Event-Handler zuweisen ... TextBox.TextChanged + = TextBoxTextChanged; In jedem Fall müssen Sie CultureInfo verwenden, um die Nummer für eine bestimmte Kultur – Oscar

+3

@Oscar zu formatieren. Es sieht so aus, als ob der Event-Handler ('- =') ausgeschaltet, der Text geändert und dann wieder eingeschaltet werden soll ('+ ='). Dies soll vermutlich die Zuweisung zu "TextBox.Text" stoppen, indem das Ereignis unendlich wiederholt wird. – paxdiablo

Antwort

0

Sie müssen eine Kultur bereitstellen, die verwendet. wie Tausende unterschreiben. Normalerweise möchten Sie die aktuelle Kultur des Benutzers verwenden.

double.TryParse(value, System.Globalization.NumberStyles.Number, System.Globalization.CultureInfo.CurrentCulture, out dbl) 
+0

Sorry Wertzui, es funktioniert nicht. Ich möchte 1000.123 eingeben, aber ich kann es nicht eingeben! –

+0

Parsing die Zeichenfolge "1000.123" mit dem obigen Code funktioniert. Basierend auf Ihrer Kultur ergibt sich entweder 100oder 1000.123. – wertzui