Richtextbox Wort für Wort eine Aktion durchführen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von pc-freack.

    Richtextbox Wort für Wort eine Aktion durchführen

    Hallo,

    ich möchte eine Art Rechtschreibüberprüfung bauen und habe bereits eine DB mit Wörtern und jetzt habe ich aber noch Probleme mit der RichTextBox.
    Also bis jetzt bekomm ich das nur mit einem Wort in der RichTextBox hin aber wenn ich ein 2. schreibe, dann passiert noch nichts, weil ich das ja net hinbekomme. Also ich möchte nur das neue Wort was man geschrieben hat überprüfen.
    Das ist der Code, der ist aber nur für ein Wort geschrieben:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Function ReadDBPath()
    3. Return Application.StartupPath & "\Data\test_db.mdb"
    4. End Function
    5. Private Function ReadDb(ByVal wort As String)
    6. RichTextBox1.Font = New Font("Microsoft Sans Serif", 20, GraphicsUnit.Pixel)
    7. Dim rw As String = RichTextBox1.Text
    8. Dim con As New OleDb.OleDbConnection
    9. Dim cmd As New OleDb.OleDbCommand
    10. If wort.EndsWith(" ") = True Then
    11. wort.Remove(wort.Length - 1, 1)
    12. End If
    13. Dim reader As OleDb.OleDbDataReader
    14. Dim an As String = """"
    15. con.ConnectionString = _
    16. "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    17. "Data Source=" & ReadDBPath() & an.Remove(0, 1).ToString
    18. cmd.Connection = con
    19. cmd.CommandText = "select Wort from Mapple_Woerterbuch"
    20. con.Open()
    21. reader = cmd.ExecuteReader()
    22. While reader.Read
    23. If Not wort = reader(0) Then
    24. RichTextBox1.Find(wort, RichTextBoxFinds.None)
    25. RichTextBox1.SelectionFont = New Font(RichTextBox1.Font.Name, RichTextBox1.Font.Size, FontStyle.Underline, GraphicsUnit.Pixel)
    26. RichTextBox1.Select(RichTextBox1.Text.Length, 0)
    27. Else
    28. RichTextBox1.Find(wort, RichTextBoxFinds.None)
    29. RichTextBox1.Font = New Font(RichTextBox1.Font.Name, RichTextBox1.Font.Size, FontStyle.Regular, GraphicsUnit.Pixel)
    30. RichTextBox1.Select(RichTextBox1.Text.Length, 0)
    31. Exit While
    32. End If
    33. End While
    34. reader.Close()
    35. con.Close()
    36. End Function
    37. Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
    38. If Not RichTextBox1.Text = "" Then
    39. ReadDb(RichTextBox1.Text)
    40. End If
    41. End Sub
    42. End Class


    Ich hoffe ihr könnt mir weiterhelfen.

    Mit freundlichen Grüßen pc-freack
    Hi
    Mal ne Frage: Schaust du im Ernst die ganze Datenbank nach Wörtern durch, die in der RichTextBox enthalten sind? (Übrigens: Whitespace-Buchstaben, wie Leerzeichen kannst du einfach mit String.Trim, String.TrimLeft und String.TrimRight entfernen. Außerdem fehlt da die Zuweisung bei wort.Remove(...))
    an.Remove(0,1) entfernt doch den "-Buchstaben und damit ist der String leer? Wozu ist das gut?

    Geh doch lieber die Text-Box durch und überprüf dort alle Wörter auf eine Existenz in der Datenbank. Dabei nimmst du aber nicht ALLE Wörter, sondern alle NEUEN Wörter:

    VB.NET-Quellcode

    1. Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
    2. If Not RichTextBox1.Text = "" Then
    3. ReadDb(RichTextBox1.Text)
    4. End If
    5. End Sub


    So gehts mit ALLEN Wörtern, den Rest darfst du dir selbst zusammenschustern, weil ich dir dieses mal die Arbeit nicht abnehmen möchte:

    VB.NET-Quellcode

    1. Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
    2. If Not RichTextBox1.Text = "" Then
    3. Array.ForEach(RichTextBox1.Text.Split(" "c), AddressOf ReadDB)
    4. End If
    5. End Sub


    Übrigens fehlt noch die Typ-Angabe bei der Function ReadDb.

    Gruß
    ~blaze~