Hallo alle miteinander, ich hab eine Frage zu dem Steuerelement NumericUpDown in C#. Ich will mit dem Steuerelement Zahlen von 0 bis 23 darstellen (inkrement ==1). Wenn ich die Zahl darstelle ist es möglich das in diesem Format zu machen : 01 02 03 . . . 22 23 allso bei allen einstelligen Zahlen mit einer führenden Null. Es klappt nach bisherigen versuchen nur ohnen führende Null.
Interessantes Problem. Ich habe mal ein wenig rumprobiert. Das numericUpDown unterdrückt beim Überschreiben der Eigenschaft -Text- nullen am Anfang. Enthält Text Buchstaben oder Sonderzeichen wird alles ignoriert. Es gibt auch keine Eigenschaft mit der man einstellen kann ob eine Null am Anfang gezeigt wird oder nicht. Vielleicht läßt sich aus der BasisKlasse UpDownBase ein eigenes numericUpDown basteln. :) Was mir noch eingefallen ist: Die Breite des numericUpDown bis auf "UpDown" verkleinern und eine TextBox direkt daneben setzen und die TextBox je nach Änderung des "UpDown ohne numeric" per Hand beschreiben. Viel Spaß, Tom
Was glaube ich auch gehen müsste anstatt der NumericUpDown eine DomainUpDown zu verwende. Einfach die Zahl 1 in einen String umwandeln und eine zusätzlich 0 in den String kopieren ->und dann reindamit ins NumericUPDown
Alternativ bastelst du dir das NumericUpDown mit zwei buttons und ner Textbox selber.
Gute Idee mit dem domainUpDown. Da kannst Du ja Deine Zahlen als Items eintragen. Kannst Du das domainUpDown mit Items->SelectedIndex abfragen?
Hallo alle, ich hatte dasselbe Problem für die Darstellung von Zeitangaben für einen digitalen Wecker (Stunden, Minuten und Sekunden) und fand die einstelligen Werte ohne führende Null auch nicht schön. Meine Lösung liegt darin, die (verborgene) und von der Basisklasse UpDownBase geerbte Eigenschaft Text zu überschreiben. Diese Eigenschaft legt fest, wie Strings im Control dargestellt werden. class ErweitertesNumericUpDown : NumericUpDown { // fügt Werten unter 10 eine führende 0 hinzu public override string Text { get { return base.Text; // keine Änderung } set { if (Convert.ToInt32(value) < 10) value = "0" + value; base.Text = value; } } } Wie bekomme ich das jetzt auf das Formular? Hier ist eine Anleitung, wie man dabei vorgehen kann (Visual Studio): 1. Die oben aufgeführte Klasse deklarieren im selben Namensraum, in dem auch das Formular ist) namespace xxx { public partial class Form1 : Form { ...} class ErweitertesNumericUpDown : NumericUpDown {...} } 2. Jetzt kann man das Objekt entweder ganz „händisch“ in der Datei Form1.Designer.cs deklarieren und alle Einstellungen programmieren (aufwändig und fehleranfällig) oder - was viel besser funktioniert: a) Ein „normales“ numericUpDown aus der Werkzeugleiste auf das Formular ziehen (habe ich bei mir zu numericStunde umbenannt) b) In der Datei Form1.Designer.cs zwei Änderungen manuell durchführen, dabei wird der vom Visual Studio erzeugte Code auskommentiert und durch die jeweils folgende Zeile ersetzt: //private System.Windows.Forms.NumericUpDown numericStunde; private ErweitertesNumericUpDown numericStunde; (der folgende Code befindet sich in der Methode InitializeComponent( ) in einem Bereich, den man nicht manuell ändern soll, aber Ausnahmen bestätigen die Regel) private void InitializeComponent() { ... //this.numericStunde = new System.Windows.Forms.NumericUpDown(); this.numericStunde = new ErweitertesNumericUpDown(); ... Das sollte es gewesen sein. Vielleicht hilft es ja jemandem. Man könnte daraus natürlich auch ein eigenes Benutzersteuerelement basteln (UserContol). Abgesehen von den führenden Nullen verhält sich das wie ein herkömmliches NumericUpDown-Steuerelement. Sollte wider erwarten jemand ein Problem damit feststellen, bitte hier posten! Ich konnte bisher keines finden. Grüsse kob
Um eine Komponente einfacher auf die Form zu bringen genügt es die Komponente zu erstellen anschließend das Programm kompilieren und schon befindet sich die selbst erstellte Komponente in der Toolbox.
Ich wollte mit den NumericUpDown auch die Uhrzeit darstellen. Habe dann aber rausgefunden das es den "DateTimePicker" gibt der hat das Problem gelöst
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.