NumericUpDown Valuechanged zündet vor Shown

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von JLH.

    Neu

    JLH schrieb:

    ändert der User den Umfang (Radius) des Rades dann erhöht sich bei gleicher Drehzahl die Geschwindigkeit
    Es könnte doch genauso die Drehzahl kleiner werden. Ist die Drehzahl immer konstant? Was ist konstant wenn die Drehzahl geändert wird? Ich denke nicht, dass man diese Logik in den Eventhandlern abbildet.

    Ich denke man packt sowas in eine Rad-Klasse und dann rechnet das Rad selbst und nicht die Controls, wo einzelne Werte empfangen werden.

    Neu

    @Haudruferzappeltnoch Die Geschwindigkeit ist doch das Produkt aus Umfang und Umdrehung also Geschwindigkeit=Umfang x Umdrehung (zB 1m X 60 U/min = 60m/min oder 1m/s). Da immer nur ein Wert geändert werden kann, geht ja rein physikalisch nicht anders, ist der andere Wert natürlich konstant (0.5m x 60 U/min = 30m/min oder 0.5m/s). Hättest Du jetzt gefragt was passiert wenn wir die Geschwindigkeit ändern...

    Ich gebe ja zu, daß ich das mit den Klassen noch nie genauer verfolgt habe. Ich verwende das VB als "Basic" mit "Visual" und Events. Ich habe damals mit "Input" als Eingabe und Return-Taste als Event angefangen zu programmieren und hänge da immer noch geistig rum :/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „JLH“ ()

    Neu

    Wenn ein Wert geändert wird, weiß man nicht automatisch welcher der beiden anderen Werte konstant bleiben soll oder ob überhaupt.
    Du sagst jetzt die Drehzahl bleibt konstant, oder vielleicht sagst du es auch nicht, daraus bin ich noch nicht schlau geworden.
    Das ist, wenn, dann aber deine Vorgabe von dir und keineswegs "natürlich" so.

    Neu

    @Haudruferzappeltnoch Meine Programme dienen der Berechnung von mathematischen Gleichungen. Es handelt sich nicht um hoch komplexe Apps oder so aber um komplexe Berechnungen. Eine schöne Oberflache für Input und Output. Man gibt Werte ein und läßt etwas berechnen. Ich denke folgende Zeilen veranschaulichen in etwa was ich meine. Ob der Code jetzt so 100%ig stimmt ist irrelevant. Wie man aber sehen kann ändert sich ja bei jedem Event nur ein Ergebniss (hier immer das selbe). Natürlich wird das komplexer bei meiner reelen Berechung. Deshalb verwende ich Flags, RemoveHandler und AddHandler.

    VB.NET-Quellcode

    1. Sub NumericUpDown_A_ValueChanged(sender as Objecht, e As EventArgs) Handels NumericUpDown_A.ValueChanged
    2. A = NumericUpDown_A.Value 'ein Wert
    3. B = NumericUpDown_B.Value 'ein weiterer Wert
    4. C = A * B 'eine hoch komplexe mathematische Formel
    5. NumericUpDown_C.value = C 'die Ausgabe des Ergebnisses
    6. End Sub
    7. Sub NumericUpDown_B_ValueChanged(sender as Object, e As EventArgs) Handels NumericUpDown_B.ValueChanged
    8. A = NumericUpDown_A.Value
    9. B = NumericUpDown_B.Value
    10. C = A * B
    11. NumericUpDown_C.value = C
    12. End Sub


    Ich möchte es dem User einfacher machen Werte einzugeben. Weg von "Input A$" "Return" "Input B$" "Return" wie früher, zu "Fülle eine Reihe von TextBoxen aus und drücke "Return" wenn Du alle hast", zu "Ändere ein Wert in einer TextBox oder NUD und sehe sofort das Ergebiss der Änderung ohne einen weiteren (unnötigen) Klick". Ich bin stets offen für bessere und einfachere Wege. Ich verwende die mir bekannten Möglichkeiten und lerne gerne dazu.