NumericUpDown-Steuerelement ohne Drehfeld möglich?

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Mike4711.

    NumericUpDown-Steuerelement ohne Drehfeld möglich?

    Hallo zusammen,

    ich möchte das NumericUpDown-Steuerelement für die Eingabe von Zahlen verwenden, benötige aber das Drehfeld nicht.

    Eine TextBox ist ungeeignet, da Tausenderpunkte, Komma und Dezimalstellen automatisch eingeblendet werden sollen.

    In den Eigenschaften habe ich nur die Möglichkeit gefunden, das Drehfeld mit "Increment = 0" zu deaktivieren.

    Gibt es eine Möglichkeit (ggf. über Code), das Drehfeld komplett auszublenden, so dass das NumericUpDown-Steuerelement wie eine normale TextBox aussieht?

    Mike
    Du kannst ja ein NumericUpDown (mit deinen Eigenschaften usw.) erstellen, und halt Visible = False, dann machste ne TextBox (visible = true!) und nen Timer, Enabled = true, ins Tick Event schreibst du

    VB.NET-Quellcode

    1. DeineTXTBox.Text = DeineNumericUpDown.Value
    Probiers mal mit

    VB.NET-Quellcode

    1. DeinNumericUpDown.Controls(0).Hide()

    oder mit

    VB.NET-Quellcode

    1. DeinNumericUpDown.Controls(0).Visible=False

    Das ist zwar beides nicht das Gelbe vom Ei, denn manchmal kommt es - zumindest bei mir - zu Darstellungfehlern, und vorhanden ist das Drehfeld noch, nur halt für den Benutzer nicht sicht- und klickbar. Platz wird aber dennoch noch dafür reserviert (was dann auffällt, wenn du versuchst, die Textbox bis zum Rand zu füllen - das gelingt nicht). Das ist aber die einfachste Methode, die mir gerade einfällt.
    Eine andere Möglichkeit wäre es natürlich, ein eigenes Steuerelement von NumericUpDown abzuleiten und dessen Zeichenroutinen neu zu implementieren...

    MfG
    Hallo LaVendetta,

    vielen Dank für den Tipp bzw. Trick!

    Ich dachte, es wäre vielleicht auch ohne "Überlistung" möglich.

    Hatte das gerade als "Provisorium" so gelöst, dass ich einfach ein Label (ohne Texteigenschaft) und gleicher Farbe wie der Hintergrund genau über das Drehrad geschoben habe.

    Ist zwar nicht die feine Englische ... aber geht auch erst mal.

    Aber das mit dem Timer und dem Tick Event hab ich von der Funktionsweise her trotzdem noch nicht so ganz verstanden.


    Mike
    @Turtle10

    Auch Dir vielen Dank für den Tipp.

    Werde ich auch mal testen.

    @Kangaroo

    Die Eingabe in der TextBox kann man natürlich mit dem Keypress Event abfangen, aber das Eingabeverhalten des NumericUpDown-Steuerelements erschien mir für meinen Zweck noch einfacher, daher hatte ich zuerst nach der Möglichkeit gesucht, das Drehrad abzuschalten.

    Danke!

    Mike

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mike4711“ ()

    Hallo,

    nun muss ich doch den Thread nochmal zum Leben erwecken.

    Ich wollte jetzt doch mal Tipp von LaVendetta testen, aber irgend etwas funktioniert nicht richtig.

    Wenn ich alles so mache, also NumericUpDown erstelle (visible = false ) und dann die TextBox erstelle (visible = true), Timer (enabled = true) und im TickEvent den Code schreibe (TextBox1.Text = NumericUpDown1.Value) und dann debugge und in der TextBox1 eine Zahl eingeben möchte, springt das Feld sofort immer wieder auf die "0" zurück.

    M. E. kann das so auch nicht funktionieren, weil TextBox1.Text ja ständig wieder mit dem Wert von NumericUpDown1.value gefüllt wird, sich also gar nicht verändern kann.

    Ich bekomme es aber nicht so hin, dass es läuft.

    Mike
    Hi,

    So kann das auch nicht funktionieren, die Begründung hast du ja schon selber gegeben. Ich glaube, die Idee hinter dem Tipp von LaVendetta war, den Text aus der TextBox in das unsichtbare NumericUpDown zu kopieren, damit dieses ihn umformatiert, und ihn dann sofort wieder (richtig formatiert) in die TextBox zurückzuschreiben (@LaVendetta: korrigier' mich, wenn ich mich irre!). Das kann aber nicht funktionieren, da das NumericUpDown keine Text-, sondern nur eine Value-Eigenschaft besitzt - und die ist bereits vom Typ Decimal, akzeptiert beim Setzen also nur bereits korrekte (Zahlen-)Werte. Daher gibt es IMHO keine Möglichkeit, diese Lösung zum Laufen zu bringen (begründeter Widerspruch ist willkommen).

    MfG
    Hallo,

    habe nochmal rumprobiert, aber da gibt es wohl wirklich keine Chance, das aufgrund der Value-Eigenschaft des NumericUpDown wie geplant zum Laufen zu bringen. Auch nicht nach Umwandlung.

    Trotzdem wie immer Dank an Alle!

    Wieder was dazu gelernt.

    Mike