Listbox - Bildlaufleiste ziehen funktioniert ab 65577 Zeilen nicht mehr

  • VB.NET

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

    Listbox - Bildlaufleiste ziehen funktioniert ab 65577 Zeilen nicht mehr

    Hallo Leute!

    Bitte um Hilfe zu nachstehendem Code. Ich weiß nicht, wie ich die VScrollBar durch eine andere ersetzen kann.
    In der VScrollBar habe ich keinen Zugriff auf Maximum/Minimum und weiß auch nicht, welches Ereignis ich
    abfragen kann; daß Scroll-Ereignis funktioniert bei mir nicht.
    Problem ist nach dem Programmcode genau erklärt.
    Vielen Dank

    Private Sub form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim index As Double 'Integer = gleiches Ergebnis
    Dim Zeile As String
    For index = 1 To 77778
    Zeile = "Dies ist Zeile " & index & " | "
    ListBox1.Items.Add(Zeile)
    Next
    Me.WindowState = System.Windows.Forms.FormWindowState.Maximized
    End Sub

    'For Index 1 bis 65577: Bildlaufleiste funktioniert.
    ' Diese Zahl ist veränderlich und abhängig von der Größe Listbox und Schriftart.
    ' In diesem Beispiel: Size.Width = 900, Size.Height = 592, Schriftart = Courier New,
    ' Schriftschnitt = Standard, Schriftgröße = 8

    ' 65579: Bildlaufleiste springt beim Ziehen an das Ende wieder nach oben
    ' auf Zeile 2. = 65579 minus 65577

    ' 77778: Bildlaufleiste springt beim Ziehen an das Ende wieder nach oben
    ' auf Zeile 12201. = 77778 minus 65577

    'Bei Rechtsklick in die Bildlaufleiste und Auswahl "Unterer Rand" funktioniert
    'es in allen Fällen so wie es sein sollte
    Das dürfte dann wohl daran liegen, dass intern eine 16-Bit-Ganzzahl verwendet wird, die irgendwann überläuft. 2^16 = 65536.
    Man könnte jetzt zwar versuchen, das zu umgehen, aber ich würde empfehlen, zuerst über folgendes nachzudenken:
    Warum hast Du über 65000 Elemente in einer ListBox? Wie soll der User da sinnvoll mit dem Programm interagieren? Vielleicht solltest Du überlegen, wie Du dem User die Daten schmackhafter anzeigen kannst, sodass dieses Problem gar nicht erst auftritt.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Hallo Niko!
    Deine Einwände sind mir klar und ich bin der gleichen Meinung; es geht mir aber hier darum, wie ich das
    Problem beheben kann.
    Das es möglich ist, ist ja durch die Aktion mit dem Kontexmenü "Unterer Rand" ja ersichtlich.
    Ich habe bisher keine Möglichkeit gefunden, wie ich über die Listbox auf das Element VScrollbar so
    zugreifen kann, das es funktioniert.
    Gruß, Neugier0001.