Entwickler-Ecke
WinForms - maskedTextBox richtig formatierte Zahlen
alexbrodi - Mi 04.03.09 11:15
Titel: maskedTextBox richtig formatierte Zahlen
Hallo,
ich habe eine maskedTextBox mit einer MSSQL Datenbank verknüpft.
Das Feld hat den Datentyp DECIMAL (15,6).
Ich möchte das in der maskedTextBox die Zahlen so dargestellt werden. 1.000,00 €
Versucht habe ich schon #.###,## $ und #,###.##. Bei 9 € werden so angezeigt 9.000,00 € oder 9,000.00 €.
Ich verwende Visual Studio 2008.
Ist das ein Bug?
Gruß
Alex
JüTho - Mi 04.03.09 12:26
Ein Bug ist in dem Ding enthalten, was vor dem PC sitzt. :wink:
Wenn Du in der SDk-Doku/MSDN unter MaskedTextBox.Mask nachliest, wirst Du erkennen, was Du für obligatorische Ziffern, für Dezimaltrenner und für Tausendertrenner verwenden musst. Dort steht dann auch: "Das eigentliche für die Anzeige verwendete Zeichen " legt der FormatProvider fest.
Eine Verknüpfung mit der Datenbank ist überhaupt nicht möglich. Du kannst allenfalls mit einer Spalte einer DataTable verbinden, und die bekommt per DbDataAdapter oder DbCommand die Verbindung mit der Datenbank.
Gruß Jürgen
alexbrodi - Mi 04.03.09 15:02
@Jürgen
das man eine maskedTextBox an eine Spalte von einer Tabelle verknüpft ist klar.
DataBindings - Text -- Tabellenname - Spaltenname.
In der Doku steht z.B. $999,999.00 diese Variante.
Letztlich wird die erste Ziffer am ersten linken Platzhalter eingefügt und alle anderen Ziffer von links nach rechts aufgefüllt.
Gruß
Alex
Kha - Mi 04.03.09 17:10
alexbrodi hat folgendes geschrieben : |
| Ist das ein Bug? |
Nein, MaskedTextBox besitzt einfach keine spezielle Logik für Preis-Formatierungen. Das Binding weist Text den Wert "9" (also einen String) zu und der wird eben irgendwie in die Maske gepresst. Wenn du keine gewöhnliche TextBox benutzen willst, müsstest du den Wert beim Binden also in "0009" umwandeln.
alexbrodi - Mi 04.03.09 18:37
Was ich benutze Textbox oder maskedTextBox ist mir egal.
Ich hätte gerne eine schöne und übersichtliche Darstellung der Werte.
Wenn ich das einer Textbox die Darstellung beibringen kann ist das auch OK.
Größere Beträge sind mit 1000er Punkt einfach übersichtlicher.
alexbrodi - Mi 11.03.09 15:55
Hallo,
Lösung gefunden.
Das geht auch mit einer textBox und DB Anbindung.
Binding bind = new System.Windows.Forms.Binding("Text", this.db_source, "db_Feld", true);
bind.FormatString = "C"; //oder N P ...
this.textBox.DataBindings.Add(bind);
Gruß
Alex
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!