Entwickler-Ecke

Basistechnologien - String in MaskedTextBox


lapadula - Fr 31.03.17 15:56
Titel: String in MaskedTextBox
Hallo,

ich komme momentan nicht weiter und bräuchte Eure Hilfe.

Ich habe eine MaskedTextBox mit der Mask: "999.99". Erlaubt quasi Geldbeträge bis max 999,99€

Nun habe ich ein string z.B "50.10". Wie bekomme ich das hin, das die MaskedTextBox 050.10 darstellt.

Momentan wird die 050.10, 5010 dargestellt


Delete - Fr 31.03.17 16:13

- Nachträglich durch die Entwickler-Ecke gelöscht -


Th69 - Fr 31.03.17 16:31

Beachte, daß der Punkt in der Maske als Kennzeichen für den Dezimaltrenner steht, d.h. für deutsch also z.B. "50,10" erwartet wird.
Daher wird bei "50.10" der Punkt als Tausendertrennzeichen angesehen (also genau andersherum wie im englischen).

Hier noch der direkte Link dazu: MaskedTextBox.Mask [https://msdn.microsoft.com/de-de/library/system.windows.forms.maskedtextbox.mask(v=vs.110).aspx]


lapadula - Mo 03.04.17 09:03

Danke für die Hilfe. Die Lösung ist:


C#-Quelltext
1:
maskedTextBox1.Text = value.ToString("000.00");                    


Damit zeigt er z.B. 040.10 an, statt 401.00.

value bekommt den Wert aus der MSSQL-Datenbank. Dort hat die Spalte den Datentyp "Money".


Delete - Mo 03.04.17 10:53

- Nachträglich durch die Entwickler-Ecke gelöscht -


lapadula - Mo 03.04.17 11:02

Was genau meinst du?


Delete - Mo 03.04.17 11:13

- Nachträglich durch die Entwickler-Ecke gelöscht -


lapadula - Mo 03.04.17 11:23

Ich verstehe nicht was du meinst sorry :D

Ich kann einen beliebigen Wert in die MaskedTextBox schreiben. Die Mask ist ja gesetzt: 999.99

Der User kann 100.50 oder 050.50 usw. eingeben. Wenn er die MaskedTextBox verlässt oder auf Enter druckt, wird dieser Wert in die Datenbank geschrieben.
Dabei wird das Komma durch einen Punkt ersetzt, weil in der Datenbank der Datentyp Money vergeben wurde und er da als Trennzeichen nur den Punkt aktzeptiert.


Delete - Mo 03.04.17 13:59

- Nachträglich durch die Entwickler-Ecke gelöscht -


lapadula - Mo 03.04.17 14:58

Ahso :) Damit wäre das erledigt, danke nochmal