Punkt zu Komma

racer_lars

Grünschnabel
Hallo Leute!

Ich bin neu hier und in c# :)
Meine Frage:

Ich möchte in Textfeldern Zahlen einlesen. Diese Zahlen, überprüfen und in Double konvertieren. Dies ist alles kein Problem.
Nun, wenn der Benutzer eine Zahl wie: 2.4 eingibt, erhalte ich immer 24
Ich hbae schon auf mehrere Weise versucht den Punkt herauszufiltern und durch ein Komma zu ersetzen. Bin aber immer wieder an irgendwelchen Hürden gescheitert.
Wenn man es weiß, ist es sicher ganz einfach.
Vielleicht kann mir wer helfen :)

Aho!
Racer
 
Was hast du denn schon so versucht?

Ich weiß ja nicht wie deine Eingabe aussieht aber ich denke mir mal mittels TextBox.
Da kannst du doch mehrere Ereignisse abfangen:
- KeyUp - Wenn einer eine Taste gedrückt hat
- TextChanged - Wenn einer gerade was eingibt
- Leave - Wenn einer das Textfeld verläßt

Ich denk mal es würde reichen, das Leave-Ereignis zu benutzen und dann könntest du den String erst einmal mittels: Replace(",", ".") - also ersetze Komma zu Punkt - ändern und schon kannst du es in einen Float, Double oder Decimal-Wert umwandeln.
 
#Scrapy

Hallo Scrapy!
Danke, für Deine rasche Antwort.
Du hast recht ich habe ein Textfeld und arbeite mit dem Ereignis Leave.
Replace habe ich schon versucht. "Erkennt" aber eigenartigerweise den Punkt nicht. Das Ergebnis bleibt gleich.
Ich versuche nun, recht kompliziert die Sache anzugehen. Indem ich den string in ein Array aus Chars umwandle (Hier erkennt er den Punkt), die Position bestimme, den Punkt durch ein Komma ersetze und das ganze zurückwandle zu einem string.
Letzteres klappt noch nicht.
Es muß aber doch eine einfachere Lösung geben?!
Vielleicht mache ich etwas falsch beim Replace statement.

Aho!
Racer
 
Hi,

poste doch mal den Code im Leave-Ereigniss.
Also bei mir klappt es mit dem Replace()

Code:
		private void textBox2_Leave(object sender, System.EventArgs e)
		{
			string text = textBox2.Text;
			text = text.Replace(".", ",");
			MessageBox.Show(text);
		}
 
#erhardt

Danke erhardt,
Hat geklappt!
Obwohl ich es vorher mit replace probiert habe? Eigenartig.
Muss irgendetwas falsch gemacht haben!
Nun, Danke, es klappt!

Aho!
Racer
 
Code:
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
		{
			TextBox tb;          
			if (e.KeyChar == '.')
			{
				e.Handled = true; 
				tb = (TextBox) sender;  
				tb.AppendText(",");  
			}
  		}

Dadurch wird, wenn der User einen Punkt eingibt, er sofort in ein Komma umgewandelt.
 
Hallo,

also falls das Komma / Punktproblem bei Zahlen und unterschiedlichen Schreibweisen zu suchen ist: Lokalisierung heisst das Zauberwort!

Damit entfällt die doch recht Fleischerartige Lösung mit REPLACE und die Methode wäre dann nicht gebietsspezifisch gebunden.

Chris
 
Zurück