Textänderungen idendifizieren

kodak

Mitglied
Hi Leute,

ich will bei eine Textchanged event einer Textbox herausfinden, was gerade eingefügt wurde. Da nicht immer nur einzelne Buchstaben, sondern auch Text hineinkopiert werden kann fällt das KeyDown Event aus. Da es um den reinen algorithmus mit den Strings geht habe ich nicht im WindowsForms Forum gepostet.

Hier ist mein erster Ansatz:
Code:
        ' geänderten Text idendifizieren
        If txtSongInput.Text.IndexOf(m_oldText) >= 0 And m_oldText.Length > 0 Then
            newInput = txtSongInput.Text.Replace(m_oldText, "")
        Else
            newInput = txtSongInput.Text
        End If

Das Problem dabei ist, dass ich nur Unterschiede am Anfang oder Ende des Eingabestrings finde.

Während des Tippens ist mir noch etwas eingefallen:
Ich vergleiche schritweise die ersten Buchstaben, und ziehe sie gleichzeitig von beiden Strings ab. Wenn es einen Unterschied gibt ziehe ich vom Eingabestring den Rest des alten Strings ab...

Gibt es eine bessere Lösung?
 
Wenn ich dich richtig verastanden habe:

Code:
If txtSongInput.Text.Contains(m_oldText) Then newInput = txtSongInput.Text.Replace(m_oldText, "")
 
ja, hast du. Das Problem war nur, dass kein Textunterschied erkannt wurde, der in der Mitte eingefügt wurde. Mein Einfall hat sich bestätigt und funtkioniert:

Code:
        newInput = txtSongInput.Text
        Do While _
        oldText.Length > 0 AndAlso _
        newInput.Length > 0 AndAlso _
        newInput.Substring(0, 1) = oldText.Substring(0, 1)
            newInput = newInput.Substring(1)
            oldText = oldText.Substring(1)
        Loop
        If oldText.Length > 0 Then
            newInput = newInput.Replace(oldText, "")
        End If
 

Neue Beiträge

Zurück