Richtextbox Wort erkennen und in Listbox

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Richtextbox Wort erkennen und in Listbox

    Ich habe eine Richtextbox und eine Listbox nun möchte ich wenn zum Beispiel <body steht das dies als Fehler erkannt wird und in die Listbox eingetragen wird, dass ein Fehler in der Zeile wo das Falsche Wort steht, gefunden wurde.

    Wenn ich dann auf dieses Listbox Item klicke soll die Richtextbox in die Zeile des Fehlers Springen und das Falsche Wort markieren.

    Ich hoffe ich hab das jetzt mal gut erklärt.

    Habe schon mehrere Seiten durchsucht, aber nichts passendes entdeckt.


    Bitte um Hilfe.

    mikeb69 schrieb:

    Hallo The Dark,

    das ist machbar.
    Wie sieht dein Code bisher aus ?
    Was genau funktioniert nicht ?

    Gruss

    mikeb69


    Hallo,


    genau das ist das Problem ich hab nur

    VB.NET-Quellcode

    1. If Richtextbox1.Text.Contains("<body ") Then Dim caretPosition = RichTextBox1.SelectionStart Dim aktuellezeile = RichTextBox1.GetLineFromCharIndex(caretPosition) + 1 ListBox1.Items.Add("Möglicher Fehler in Zeile " & aktuellezeile & " <body ")End if




    aber dieser Code ist von Grund auf nicht für das geeignet wie ich festgestellt habe.
    Hallo TheDark,

    versuch es mal in etwa so

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Dim rtb As New RichTextBox
    4. rtb.Text = "Dies ist mein Text !"
    5. Dim pos As Integer = rtb.Text.IndexOf("ist", 0)
    6. If pos > -1 Then
    7. 'gefunden
    8. Else
    9. 'nicht gefunden
    10. End If
    11. End Sub
    12. End Class


    Gruss

    mikeb69

    mikeb69 schrieb:

    Hallo TheDark,

    versuch es mal in etwa so

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Dim rtb As New RichTextBox
    4. rtb.Text = "Dies ist mein Text !"
    5. Dim pos As Integer = rtb.Text.IndexOf("ist", 0)
    6. If pos > -1 Then
    7. 'gefunden
    8. Else
    9. 'nicht gefunden
    10. End If
    11. End Sub
    12. End Class


    Gruss

    mikeb69
    Das ist leider auch nicht was ich suche ich erklärs mal genauer.


    Sagen wir mal ich habe in der zweiten Zeile oder einer anderen unbestimmten zeile das wort "ist" stehen dann soll die Listbox ein Item hinzufügen in dem steht Möglicher fehler "ist" in Zeile "x"

    und wenn ich dieses item dann anklicke soll die richtextbox zu dieser zeile x springen und das wort ist makieren.
    Hallo TheDark,

    meine Absicht war es ja auch nicht dir einen deine Probleme lösenden Code zu geben, sondern nur einen Ansatz dazu.
    Den hast du nun !

    Der erste Punkt ist damit leicht lösbar.

    Das zweite
    und wenn ich dieses item dann anklicke soll die richtextbox zu dieser zeile x springen und das wort ist makieren.

    errecihst du wenn du die in der Listbox gespeicherte Position SelectionStart übergibst und SelectionLength mit der Anzahl der Zeichen welche Markiert werden sollen fütterst.

    Gruss

    mikeb69

    mikeb69 schrieb:

    Hallo TheDark,

    meine Absicht war es ja auch nicht dir einen deine Probleme lösenden Code zu geben, sondern nur einen Ansatz dazu.
    Den hast du nun !



    Das zweite
    und wenn ich dieses item dann anklicke soll die richtextbox zu dieser zeile x springen und das wort ist makieren.

    errecihst du wenn du die in der Listbox gespeicherte Position SelectionStart übergibst und SelectionLength mit der Anzahl der Zeichen welche Markiert werden sollen fütterst.

    Gruss

    mikeb69
    Das hab ich auch nicht verlangt ;D

    Danke ich schau mal wie weit ich komme :D

    mikeb69 schrieb:

    Hallo TheDark,

    meine Absicht war es ja auch nicht dir einen deine Probleme lösenden Code zu geben, sondern nur einen Ansatz dazu.
    Den hast du nun !

    Der erste Punkt ist damit leicht lösbar.

    Das zweite
    und wenn ich dieses item dann anklicke soll die richtextbox zu dieser zeile x springen und das wort ist makieren.

    errecihst du wenn du die in der Listbox gespeicherte Position SelectionStart übergibst und SelectionLength mit der Anzahl der Zeichen welche Markiert werden sollen fütterst.

    Gruss

    mikeb69

    Mein Code sieht jetzt so aus


    VB.NET-Quellcode

    1. Private Sub Button4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    2. Dim x As Integer = 0
    3. Dim f1 As String = "<body"
    4. For Each f1 In RichTextBox1.Text
    5. Dim pos As Integer = RichTextBox1.Text.IndexOf("<body", x)
    6. If pos > -1 Then
    7. If ListBox1.Items.Contains(pos) Then
    8. Exit Sub
    9. Else
    10. x = pos + 5
    11. ListBox1.Items.Add(pos)
    12. ListBox2.Items.Add("<body")
    13. End If
    14. Else
    15. 'nicht gefunden
    16. End If
    17. Next f1
    18. End Sub




    und die listbox

    VB.NET-Quellcode

    1. ListBox2.SelectedItem = ListBox1.SelectedIndex
    2. If ListBox2.Items.Contains("<body") Then
    3. RichTextBox1.SelectionStart = ListBox1.SelectedItem
    4. RichTextBox1.SelectionLength = 5
    5. RichTextBox1.SelectedText = " <body> "




    Und somit ein neues Problem.

    Manchmal ändert sich das Wort Richtig manchmal nur teilweise manchmal sprint es zeilen nach oben usw.

    villeicht gibts ne bessere möglichkeit wie ich das umschreiben könnte.
    Ist ja auch humbuk^^
    Du brauchst die Position des Wortes, nicht den Index des Items in der listbox!

    Lese die vorherigen Posts ganz genau und versuche den Code nachzuvollziehen. Es wurde eigentlich alles gesagt..

    LG

    Edit: der button-Code ist schrecklich

    TheDark schrieb:

    Ich habe eine Richtextbox und eine Listbox nun möchte ich wenn zum Beispiel <body steht das dies als Fehler erkannt wird und in die Listbox eingetragen wird, dass ein Fehler in der Zeile wo das Falsche Wort steht, gefunden wurde.

    Und wenn <body> da steht - wäre das auch ein Fehler?