Ausnahmefehler: System.ArgumentOutOfRangeException

  • VB.NET
  • .NET (FX) 4.0

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

    Ausnahmefehler: System.ArgumentOutOfRangeException

    Hallo Leute,

    Wenn ich den Code hier aufrufe, bekomme ich folgenden Fehler den ich nit fixen kann:

    Quellcode

    1. Ein Ausnahmefehler des Typs "System.ArgumentOutOfRangeException" ist in System.Windows.Forms.dll aufgetreten.
    2. Zusätzliche Informationen: Der Wert 17 ist für Value ungültig. Value sollte zwischen 'minimum' und 'maximum' liegen.


    Dazu wird mir die Zeile 45 und 56 als Fehlerhaft angezeigt.

    Vielleicht könnt ihr mir ja mal wieder helfen :)

    VB.NET-Quellcode

    1. Private Sub set_vscroll()
    2. Dim NewLargeChange As Short
    3. Dim zimmer_temp_wert As Object
    4. Dim stunde As Short
    5. Dim heizkreis As Short
    6. Dim wochentag As Short
    7. wochentag = select_wochentag()
    8. heizkreis = select_heizkreis()
    9. If (heizkreis = Boiler) Then
    10. Label3.Text = "60 50 40 30 20 10 5"
    11. Else
    12. Label3.Text = "23 22 21 20 19 18 17"
    13. End If
    14. For stunde = 0 To 23
    15. Label4(stunde).Text = CStr(stunde)
    16. zimmer_temp_wert = zimmer_temp_soll(heizkreis, wochentag, stunde)
    17. If (heizkreis = Boiler) Then
    18. VScroll1(stunde).SmallChange = 2
    19. NewLargeChange = 8
    20. VScroll1(stunde).Maximum = VScroll1(stunde).Maximum + NewLargeChange - VScroll1(stunde).LargeChange
    21. VScroll1(stunde).LargeChange = NewLargeChange
    22. VScroll1(stunde).Maximum = (10 + VScroll1(stunde).LargeChange - 1)
    23. VScroll1(stunde).Minimum = 60
    24. Else
    25. VScroll1(stunde).SmallChange = 1
    26. NewLargeChange = 2
    27. VScroll1(stunde).Maximum = VScroll1(stunde).Maximum + NewLargeChange - VScroll1(stunde).LargeChange
    28. VScroll1(stunde).LargeChange = NewLargeChange
    29. VScroll1(stunde).Maximum = (17 + VScroll1(stunde).LargeChange - 1)
    30. VScroll1(stunde).Minimum = 23
    31. End If
    32. If (heizkreis <> Boiler) Then
    33. If (zimmer_temp_wert < 17) Then zimmer_temp_wert = 17
    34. If (zimmer_temp_wert > 23) Then zimmer_temp_wert = 23
    35. VScroll1(stunde).Value = zimmer_temp_wert
    36. zimmer_temp_soll(heizkreis, wochentag, stunde) = zimmer_temp_wert
    37. Command3.Text = "auf 17 Grad setzen"
    38. Else
    39. If (zimmer_temp_wert < 20) Then zimmer_temp_wert = 20
    40. If (zimmer_temp_wert > 60) Then zimmer_temp_wert = 60
    41. VScroll1(stunde).Value = zimmer_temp_wert
    42. zimmer_temp_soll(heizkreis, wochentag, stunde) = zimmer_temp_wert
    43. Command3.Text = "auf 45 Grad setzen"
    44. End If
    45. Next stunde
    46. End Sub
    Du setzt:

    VB.NET-Quellcode

    1. Entweder:
    2. VScroll1(stunde).Maximum = (10 + VScroll1(stunde).LargeChange - 1)
    3. VScroll1(stunde).Minimum = 60
    4. Oder:
    5. VScroll1(stunde).Maximum = (17 + VScroll1(stunde).LargeChange - 1)
    6. VScroll1(stunde).Minimum = 23


    dann

    VB.NET-Quellcode

    1. If (zimmer_temp_wert < 17) Then zimmer_temp_wert = 17


    dann

    VB.NET-Quellcode

    1. VScroll1(stunde).Value = zimmer_temp_wert


    Du sagst nicht was VScroll1 ist, aber ich schätze ieine Arte Scrollbar oder so. Wenn es ein Minimum von 23/60 gibt, dann muss die Value auch mindestens 23 sein.
    Das ist meine Signatur und sie wird wunderbar sein!
    @sm00thelf Vielleicht noch ein paar Gedanken zu Deinem Code:
    • mach ganz schnell Option Strict On, da wirst Du gezwungen, die korrekten Datentypen zu verwenden.
    • Mache die Maxima der VScrolls fix, Du belegst den Wert 2 Mal..
    • Die Label4() haben einen fixen Text, mach den im Designer.
    • Mach SmallChange und LargeChange beide auf 1
    • If (heizkreis = Boiler) Then Ein If und ein Else, vereinige Deine beiden If-Blöcke.
    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!