Version 2014-05-12:
Nun ist die überarbeitete Version der NumericTextBox fertiggestellt, und als Testprojekt beigefügt. In den Grundzügen ist dieses Control seit 2009 in verschiedensten Projekten im Einsatz.
Die wesentlichste Überarbeitung stellt die Einbindung des Zahlenformates HexaDezimal auf Anregung von @sonne75 dar, sowie das dynamische Ein-/Ausblenden von Properties durch Anstoss von @VB1963 dar.
Das Control erbt von System.Forms.Textbox, und verfügt über einen integrierten ErrorProvider
Die erweiterte Funktionalität umfasst:
Das Beispielprojekt ist standardmässig mit der Form frmMain als Startform definiert. Dort gibt es einen Zufallsdatengenerator, der eine Tabelle mit 100 Datensätzen füllt.
Daraus wird Dataset und BindingSource erstellt, an die ein Datgridview gebunden ist.
Weiterhin sind 4 NumericTextBoxes mit den unterschiedlichen Zahlenformaten über NumericTextBox.Value an die Tabellenspalte Value gebunden.
Damit kann die Funktionalität zur Entwurfszeit und zur Laufzeit überprüft werden.
Interessant ist auch das Rundungsverhalten bei der Anzeige.
Bei der Entwicklung stellte sich heraus, dass die Abfolge der Events bei Eingabe in die Textbox von kritischer Bedeutung ist.
In der Form frmEvents werden die auftretenden Events in ihrer Abfolge in einer Listbox dargestellt.
Damit wird klar, warum bestimmte OnKey-Events in der NumericTextBox verwendet werden.
Ich würde mich weiterhin freuen, wenn Anregungen zur weiteren Verbesserung beitrügen.
ToDo:
//Edit1:
Der ursprüngliche Beitrag hat bedauerlicherweise einen unfertigen Quelltext verfügbar gemacht.
Versionskontrollsysteme sind also doch unverzichtbar ...
//Edit vom 25.05.2014:
Spoiler anzeigen
//Edit vom 26.05.2014
Ursprungsdownload entfernt, ist fälschlicherweise ein paarmal heruntergeladen worde, sorry.
//Edit vom 09.07.2014
Neue Version 3.2014.709.399 mit folgenden Änderungen/Ergänzungen:
Spoiler anzeigen
Der Download des Beispielprojektes US.Windows.Forms.NumericTextBox19(3.2014.709.399).zip findet sich bei Post#1
Nun ist die überarbeitete Version der NumericTextBox fertiggestellt, und als Testprojekt beigefügt. In den Grundzügen ist dieses Control seit 2009 in verschiedensten Projekten im Einsatz.
Die wesentlichste Überarbeitung stellt die Einbindung des Zahlenformates HexaDezimal auf Anregung von @sonne75 dar, sowie das dynamische Ein-/Ausblenden von Properties durch Anstoss von @VB1963 dar.
Das Control erbt von System.Forms.Textbox, und verfügt über einen integrierten ErrorProvider
Die erweiterte Funktionalität umfasst:
- Beschränkung der Eingabe auf bestimmte Zahlenformate.
- Zahlenformate: Currency, Decimal, HexaDecimal, Custom.
- Überprüfung Der Eingabe auf zulässige Zeichen entsprechend des Zahlenformates.
- Definitionssets für jedes Zahlenformat für Minimal und Maximal-Wert. Defaultwerte sind Decimal.MinValue und Decimal.MaxValue.
- Überprüfung des Eingabewertes auf Einhaltung des Minimum/Maximumbereichs.
- Der integrierte ErrorProvider zeigt Eingaben ausserhalb des Minimum/Maximum-Bereichs an.
- Ausblenden der nicht benötigten Definitionssets zur Entwurfszeit anhand des ausgewählten Zahlenformates.
- Internationalisierung durch Auswahl der aktiven CulturInfo.
- Property Value as Decimal gibt den eingegenen numerischen Wert zurück.
- Property Value ist als Standardbindungseigenschaft definiert, und implementiert INotifyPropertyChanged.
- Bei Datenänderung wird das Event NumericTextBoxValueChanged ausgelöst.
- Property LeaveOnEnter legte fest, ob bei Betätigung der <Enter>-Taste zum nächsten Contral gewechselt wird.
- Property BankersRounding implementiert die richtige kaufmännische Rundung auf die angegebene Zahl Dezimalstellen.
Das Beispielprojekt ist standardmässig mit der Form frmMain als Startform definiert. Dort gibt es einen Zufallsdatengenerator, der eine Tabelle mit 100 Datensätzen füllt.
Daraus wird Dataset und BindingSource erstellt, an die ein Datgridview gebunden ist.
Weiterhin sind 4 NumericTextBoxes mit den unterschiedlichen Zahlenformaten über NumericTextBox.Value an die Tabellenspalte Value gebunden.
Damit kann die Funktionalität zur Entwurfszeit und zur Laufzeit überprüft werden.
Interessant ist auch das Rundungsverhalten bei der Anzeige.
Bei der Entwicklung stellte sich heraus, dass die Abfolge der Events bei Eingabe in die Textbox von kritischer Bedeutung ist.
In der Form frmEvents werden die auftretenden Events in ihrer Abfolge in einer Listbox dargestellt.
Damit wird klar, warum bestimmte OnKey-Events in der NumericTextBox verwendet werden.
Ich würde mich weiterhin freuen, wenn Anregungen zur weiteren Verbesserung beitrügen.
ToDo:
Verhalten, wenn über die Datenbindung Daten ausserhalb des Wertebereiches Minimum/Maximum zur Verfügung gestellt werden.siehe Post #26Parsen des Custom-Formates unvollständig.
//Edit1:
Der ursprüngliche Beitrag hat bedauerlicherweise einen unfertigen Quelltext verfügbar gemacht.
Versionskontrollsysteme sind also doch unverzichtbar ...
//Edit vom 25.05.2014:
Aktuelle Version: 3.2014.523.381
Änderungen/Ergänzungen:
Änderungen/Ergänzungen:
- Überarbeitung des gesamten Codes
- Wording angepasst
- Versionierung eingeführt
- Control als eigenes DLL-Projekt erstellt
- Neues Event NumericTextBoxNumberFormatChanged
- String-Konstante eingeführt
- Category und Description-Attribute bei Properties ergänzt.
- KeyCheck-, ValueParse und ValueCheck-Methoden sauber getrennt.
- Smart-Tags eingeführt
- Geerbte, nicht benötigte Properties ausgeblendet
- HexDezimale Anzahl Digits auf Int64 einstellbar ausgeweitet
- Musterform zum Debuggen des Controls
//Edit vom 26.05.2014
Ursprungsdownload entfernt, ist fälschlicherweise ein paarmal heruntergeladen worde, sorry.
//Edit vom 09.07.2014
Neue Version 3.2014.709.399 mit folgenden Änderungen/Ergänzungen:
- Beim CustomNumberFormat werden nun die Dezimalstellen richtig erkannt.
- Neue Properties TextAlignFocused und TextAlignNotFocused bestimmen die Textausrichtung bei Fokuserhalt/Fokusverlust
- SmartTags entsprechend ergänzt
- Änderungen bei den Zahlenformaten werden nun auch im Designer sofort angezeigt (über Events)
- Validierungen und Umwandlungen gestrafft
Der Download des Beispielprojektes US.Windows.Forms.NumericTextBox19(3.2014.709.399).zip findet sich bei Post#1
Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „us4711“ ()