Zeilennummerierung stockt [VB.NET]

Impi2k

Mitglied
Hallo Communty,
ich bin gerade dabei einen kleinen Editor zu schreiben wobei natürlich die Zeilennummerierung nicht fehlen darf.

Meine Methode zum Nummerieren funktioniert:
Code:
Private Sub updateNumberLabel(ByVal sender As Object, ByVal e As System.EventArgs) Handles rtbText.TextChanged, rtbText.VScroll, rtbText.FontChanged
        With rtbText
            Dim pos As System.Drawing.Point = New System.Drawing.Point(0, 0)
            Dim firstIndex As Integer = .GetCharIndexFromPosition(pos)
            Dim firstLine As Integer = .GetLineFromCharIndex(firstIndex)

            pos.X = ClientRectangle.Width
            pos.Y = ClientRectangle.Height

            Dim lastIndex As Integer = .GetCharIndexFromPosition(pos)
            Dim lastLine As Integer = .GetLineFromCharIndex(lastIndex)

            pos = .GetPositionFromCharIndex(lastIndex)

            lblNumber.Text = ""

            For i As Integer = firstLine To lastLine Step 1
                lblNumber.Text += i + 1 & System.Environment.NewLine
            Next
        End With
    End Sub

Einziges Problem ist und bleibt, dass es sehr stockt vorallem wenn die Fenstergröße erweitert wird.

Wisst ihr eine andere Möglichkeit die Sache schneller über die Bühne laufen zu lassen.

Impi
 
Zähl nur die Zeilen die auch wirklich sichtbar sind ...
Arbeite mit den Methoden SuspendLayout und ResumeLayout der Steuerelemente.
 
Zudem würde ich die Zeilennummern nicht gleich in das Label eintragen. Generiere den Text zuerst in einen String und füge weise dann den Text dem Label zu. So wird werden gleich die ganzen Nummern eingetragen und man sieht nicht wie die Zahlen bei langsamen Berechen nach der Reihe eingetragen werden.
 

Neue Beiträge

Zurück