In einem Abschnitt einer Richtextbox suchen

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    In einem Abschnitt einer Richtextbox suchen

    Ich habe eine RichTextBox.
    Wenn ich in dieser was suchen möchte, dann benutze ich folgenden Code.

    VB.NET-Quellcode

    1. Sub Suchen(RTB As RichTextBox)
    2. Dim Suchtext As String = "Textmarke1a"
    3. RTB.Find(Suchtext)
    4. RTB.SelectionStart = RTB.Find(Suchtext)
    5. RTB.SelectionLength = Suchtext.Length
    6. RTB.Focus()
    7. RTB.ScrollToCaret()
    8. End Sub

    Das Klappt soweit gut.
    Nun meine Frage, wie kann ich im nächsten Schritt etwas in einem bestimmten Abschnitt des Textes in der RichTextBox suchen?
    Beispielsweise möchte ich was zwischen meinem Treffer (Suchtext) und dem nächsten roten fetten Zeichen im Text suchen.
    Ich bin schon auf diesen Code gestoßen:

    VB.NET-Quellcode

    1. RTB.Find(Suchtext2, StartPosition, EndPosition)

    Als Start kann ich ja

    VB.NET-Quellcode

    1. Dim StartPosition As Integer = RTB.SelectionStart
    einsetzten, aber wie ermittel ich meine EndPosition (das nächste rote fette Zeichen im Text nach dem ersten Treffer)?
    @max1605 Da musst Du Zeichen für zeichen selektieren und Dir .SelectedColor und .SelectedFont auf Deine Zieleigenschaften hin testen.
    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!

    max1605 schrieb:

    Codebeispiel
    Verstehe dies:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. RichTextBox1.Text = "ölkyjfvölksdjbgflkm kj säkljsf bgäö"
    4. RichTextBox1.SelectionStart = 4
    5. RichTextBox1.SelectionLength = 4
    6. RichTextBox1.SelectionColor = Color.Red
    7. RichTextBox1.SelectionStart = 8
    8. RichTextBox1.SelectionLength = 8
    9. RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Bold)
    10. RichTextBox1.SelectionStart = 0
    11. RichTextBox1.SelectionLength = 0
    12. End Sub
    13. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    14. Dim rot As Integer = 0
    15. Dim bold As Integer = 0
    16. For i = 0 To RichTextBox1.TextLength - 1
    17. RichTextBox1.SelectionStart = i
    18. RichTextBox1.SelectionLength = 1
    19. If RichTextBox1.SelectionColor = Color.Red Then
    20. rot += 1
    21. End If
    22. If RichTextBox1.SelectionFont.Bold Then
    23. bold += 1
    24. End If
    25. Next
    26. Label1.Text = String.Format("rot: {0}", rot)
    27. Label2.Text = String.Format("bold: {0}", bold)
    28. RichTextBox1.SelectionStart = 0
    29. RichTextBox1.SelectionLength = 0
    30. End Sub
    31. End Class
    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!