Automatischer Zeilenumbruch bzw. NewLine in Textbox/Multiline

  • VB.NET
  • .NET (FX) 4.0

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

    Automatischer Zeilenumbruch bzw. NewLine in Textbox/Multiline

    Hallo,

    habe versucht eine Möglichkeit zu schaffen, dass ein automatischer Zeilenumbruch in einer TextBox mit Multiline=True statt findet, so mein Code:

    VB.NET-Quellcode

    1. Private Sub Aze_tagebuchtextTextBox_TextChanged(sender As Object, e As System.EventArgs) Handles Aze_tagebuchtextTextBox.TextChanged
    2. For i As Integer = 0 To Aze_tagebuchtextTextBox.Text.Length - 1
    3. If Aze_tagebuchtextTextBox.Lines(i).Length > 90 Then
    4. For x As Integer = 0 To Aze_tagebuchtextTextBox.Lines(i).Length - 1 Step 90
    5. Aze_tagebuchtextTextBox.Lines(i) = Aze_tagebuchtextTextBox.Lines(x).Insert(89, Environment.NewLine)
    6. Next
    7. End If
    8. Next
    9. End Sub


    Fehlermeldung - siehe angefügtes Bild...


    Verstehe es einfach nicht, warum er an dieser Stelle meckert...

    Könnt Ihr mir da weiterhelfen ?

    Danke vorab!
    Bilder
    • 03.PNG

      25,4 kB, 949×175, 312 mal angesehen
    Naja du hast scheinbar mehr Zeichen im Text wie Zeilen im Text. Deswegen "Out of Range"

    i ist definiert als 0 - Text.lenght-1
    Aber
    Aze_tagebuchtextTextBox.Lines(i) sind nicht die Zeichen sondern die Zeilen.

    12345
    12345

    Text.Lenght = 10
    .Line = 2
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    michl75 schrieb:

    For i As Integer = 0 To Aze_tagebuchtextTextBox.Text.Length - 1
    If Aze_tagebuchtextTextBox.Lines(i).Length > 90 Then
    Do loopst durch die Anzahl der Zeichen und nimmst den Index für die Anzahl der Zeilen.
    Irgendwann sind die Zeilen aus...
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    michl75 schrieb:

    warum er an dieser Stelle meckert...
    Offensichtlich verstzehst Du Deinen eigenen Code nicht. ;(
    Gugst Du hier.
    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!
    also ein erster Versuch war Müll.. gebe ich zu und so recht verstanden habe ich a ned, was ich da eigentlich zusammengebastelt habe...

    überarbeite das ganze noch mal...


    EDIT:

    So gibt's keine Fehlermeldung, aber ein Zeilenumbruch wird auch nicht gemacht. Ich weis, keine tolle Lösung.. vorallem ist da noch der Fehler drinnen, dass bei jedem y = 19 zusätzlich noch ein Umbruch eingefügt würde.

    Aber erst mal soll es laufen, dann passe ich die schleife an...

    VB.NET-Quellcode

    1. Private Sub Aze_tagebuchtextTextBox_TextChanged(sender As Object, e As System.EventArgs) Handles Aze_tagebuchtextRichTextBox.TextChanged
    2. Dim _zeichenanzahl As Integer = Aze_tagebuchtextRichTextBox.Text.Length - 1
    3. Dim i As Integer = 0
    4. Dim y As Integer = 19
    5. Try
    6. For i = 0 To _zeichenanzahl
    7. If i = y Then
    8. Aze_tagebuchtextRichTextBox.Text.Insert(y, Environment.NewLine)
    9. y += 19
    10. End If
    11. Next
    12. Catch ex As Exception
    13. MsgBox(ex.Message) 'TEST
    14. End Try
    15. End Sub

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

    michl75 schrieb:

    aber ein Zeilenumbruch wird auch nicht gemacht.
    Weil Insert gibt den Resultats-String zurück, den ignorierst Du.
    Sieh Dir mal dies an, es macht was, jedoch werden zu den vorhandenen Zeilenumbrüchen permanent neue hinzugefügt, das müsstest Du abstellen.
    Und: Im RichText kommt ein <CR> nicht vor, lediglich ein <LF>.

    VB.NET-Quellcode

    1. Private Sub Aze_tagebuchtextTextBox_TextChanged(sender As Object, e As System.EventArgs) Handles Aze_tagebuchtextRichTextBox.TextChanged
    2. Static change As Boolean = False
    3. If change Then
    4. Return
    5. End If
    6. change = True
    7. Dim txt = Aze_tagebuchtextRichTextBox.Text
    8. Dim _zeichenanzahl As Integer = txt.Length - 1
    9. Dim i As Integer = 0
    10. Dim y As Integer = 19
    11. Try
    12. For i = 0 To _zeichenanzahl
    13. If i = y Then
    14. txt = txt.Insert(y, Environment.NewLine)
    15. y += 19
    16. End If
    17. Next
    18. Aze_tagebuchtextRichTextBox.Text = txt
    19. change = False
    20. Catch ex As Exception
    21. MsgBox(ex.Message) 'TEST
    22. End Try
    23. End Sub
    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!