Bestimmtes Wort formatieren

  • VB.NET

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

    Bestimmtes Wort formatieren

    Also Hallo zusammen,
    ich habe eine Richtextbox ("Textfeld") in welche in ein Text eingeb. Dann möchte ich über einen Button ein bestimmtes Wort markieren, wenn es in dem Text vorkommt.
    Bis jetzt habe ich es so gelöst:

    Textfeld.SelectionStart = 0

    Textfeld.SelectionLength = Textfeld.Text.Length

    If Textfeld.SelectedText.Contains("test") Then

    Textfeld.SelectionColor = Color.Blue

    End If

    ​Allerdings markiert er ja so den gesamten Text und nicht nur das Wort. Aber wie kann ich es dann Lösen nur diese Wort zu formatieren? Mit einer List(Of String) habe ich es auch schon versucht, klappt aber auch nicht...

    Braendosch schrieb:

    ein bestimmtes Wort markieren
    geht so:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim selText = "bb"
    3. If Not Me.RichTextBox1.Text.Contains(selText) Then
    4. Return
    5. End If
    6. Dim start = Me.RichTextBox1.Text.IndexOf(selText)
    7. Me.RichTextBox1.SelectionStart = start
    8. Me.RichTextBox1.SelectionLength = selText.Length
    9. Me.RichTextBox1.SelectionColor = Color.Red
    10. 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!
    Hej @Braendosch.
    Du könntest es so machen:

    VB.NET-Quellcode

    1. Dim tFormat As String = Textfeld.Text.Replace("test", "[test]") 'Alle Vorkommnisse des Wortes markieren (hier jetzt mit eckigen Klammern, kann man aber ändern)
    2. Textfeld.Text = String.Empty
    3. For Each c As Char In tFormat.ToCharArray()
    4. If c = "["c Then
    5. Textfeld.SelectionColor = Color.Blue
    6. ElseIf c = "]"c Then
    7. Textfeld.SelectionColor = Color.Black 'Oder was auch immer vorher war
    8. Else
    9. Textfeld.AppendText(c.ToString)
    10. End If
    11. Next


    @RodFromGermany Das funktioniert aber nur beim ersten Vorkommen des Wortes.

    Grüße
    Väinämö

    Vainamo V schrieb:

    aber nur beim ersten Vorkommen des Wortes
    Wie in der Aufgabenstellung:

    Braendosch schrieb:

    ein bestimmtes Wort markieren
    Da haben wir wieder das bekannte Problem:
    Die meisten Fehler bei der Softwareentwicklung werden bei der Spezifikation / Aufgabenstellung begangen. :/
    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!

    Braendosch schrieb:

    Wörter aus der Liste
    mit Mehrfach-Selektierung:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. Me.RichTextBox1.Text = "aa bb cc aaa bbb ddcc"
    4. End Sub
    5. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6. Dim parts() = Me.RichTextBox1.Text.Split(" "c)
    7. For i = 0 To 2
    8. Me.SelectString(parts(i))
    9. Next
    10. End Sub
    11. Private Sub SelectString(selText As String)
    12. If Not Me.RichTextBox1.Text.Contains(selText) Then
    13. Return
    14. End If
    15. Dim start = 0
    16. Do
    17. start = Me.RichTextBox1.Text.IndexOf(selText, start)
    18. If start = -1 Then
    19. Return
    20. End If
    21. Me.RichTextBox1.SelectionStart = start
    22. Me.RichTextBox1.SelectionLength = selText.Length
    23. Me.RichTextBox1.SelectionColor = Color.Red
    24. start += 1
    25. Loop
    26. End Sub
    27. 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!