NumericUpDown.Increment abhängig vom Wert machen?

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    NumericUpDown.Increment abhängig vom Wert machen?

    Abend,

    ist es irgendwie möglich NumericUpDown.Increment abhängig vom derzeitigen WErt des NumericUpDowns zu machen?
    Bedeutet, dass ich z.b. von 0 bis 1000 Increment 50 habe, also immer 50er Schritte. Ab 1000 dann 100er Schritte, 10000 dann 250er Schritte, etc. .

    Artentus schrieb:

    Nur wenn du das direkt vor dem Increment prüfst. Wäre allerdings ne ziemlich ranzige Lösung. Du könntest dir halt eine extra Funtktion schreiben, die das ganze kapselt, dann wäre es wieder schön aufgeräumt.
    Was genau und wie soll ich das vor dem Increment prüfen? Also nochmal genauer: Mein Problem ist, dass Increment ja schon zuvor festgelegt wird, und nicht erst wenn ich auf einen der Pfeile vom NumericUpDown klicke. Also wenn der Wert 1000 ist und ich klicke auf den Pfeil nach unten soll Increment 50 sein, wenn ich aber beim Wert 1000 auf dem Pfeil nach oben klicke soll Increment 100 sein.
    Also wärs am einfachsten wenn man irgendwie erkennen könnte welcher der Pfeile geklickt wurde, aber hab dazu nichts gefunden..
    Das mit dem erledigt war aus Versehen und jetzt bekomm ichs irgendwie nicht mehr weg.^^
    Naja, müsste dann als theoretisch immer den alten Wert in einer Variable speichern und dann im ValueChanged Event mit dem neuen Wert vergleichen, was besseres fällt mir nicht ein.
    Da ist das Problem aber dann, dass ich zusätzlich auch noch den Wert runden will (also wenn man z.b. 37 eingibt wird auf 50 gerundet, bei 7823 auf 7800, etc.), wenn er manuell eingegeben wird und nicht per Pfeiltasten vom NumericUpDown.
    Bezweifle irgendwie, dass es für diesen Fall 'ne Lösung gibt, da sich dass Runden und das Incrementzeugs dann in die Quere kommt. Kann man vielleicht noch an irgendwas erkennen ob der Wert per Tastatureingabe oder über die Pfeiltasten des NUD geändert wurde?

    Das ganze ist ja eig. kein großes Problem und würde wahrscheinlich nicht mal jemandem auffallen, bin einfach nur zu perfektionistisch. :D Wenn's nicht geht, dann lass ich's halt so..
    Ich konnte nicht finden, was das ermöglichen würde. Entweder du machst das halt jetzt über den komplizierten Weg, oder du schreibst dir ein eigenes Usercontrol, da kannst du dann alles von Grund auf so einstellen, wie dus brauchst.

    Übrigens das erledigt hast du wieder aufgehoben, indem du gepostet hast.
    Das ist echt verzwickt xD
    Das Control so dermaßen umzugestalten stößt sehr schnell an seine Grenzen. Ein Usercontrol schaffts da weiter - eine Textbox und zwei Buttons... Wenigstens das Idealverhalten ist schnell implementiert aber: In die Textbox dürfen nur (Komma-)Zahlen, und da ist man schon wieder beim nächsten nur unschön lösbaren Problem...
    @hazemow: Vielleicht nimmst Du nicht den Wert selbst, sondern dessen Logarithmus Dim v = Math.Log(NumericUpDown1.Value) um Schrittweiten festzulegen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!