none
Suchfunktion für TextBox1 RRS feed

  • Frage

  • Hallo,

    Ich bin gerade an einem kleinen Programm, mit dem man einen Text  (TextBox1.Text) durchsuchen kann.
    So jetzt kommt meine Frage...
    Ich möchte, das wenn man auf einen Button /button1) klickt der Text der in der Textbox (TextBox1.Text) steht nach dem Wort durchsucht wird, welches in der TextBox2 steht und anschließend das gefundene Wort markiet wird. Ich würde das ganze gerne mit dem .select-Funktion machen.

    Danke schonmal...
    MFG Stephan R.
    Samstag, 3. Januar 2009 13:01

Antworten

  •  BigG-FTW Schrieb:
    Der Nachteil von diesem Code ist jedoch, dass immer nur das erste Wort, welches übereinstimmt sellektiert wird jedes weitere leider nicht. Groß- Kleinschreibung muss leider auch beachtet werden
    Oh, das ist wahr. Zumindest den Teil mit Groß-/Kleinschreibung kann man beheben, wenn man jeweils hinter TextBoxx.Text noch ein ".ToUpper" oder ".ToLower" einfügt (was man halt lieber mag). Das bewirkt dann dass der ganze Text zu Groß-/Kleinbuchstaben verändert wird. 

    @"unten stehender Code"
    Also, zu erst wird der Text aus Textbox1 genommen und in einer Version aus nur Kleinbuchstaben wird überprüft, ob eine "Kleinbuchstabenversion" des Textes aus Textbox2 darin vorkommt. Ist dies der Fall, so wird in Textbox1 das erste Vorkommen des Textes selectiert. Am Ende bekommt noch die Textbox1 den Focus, sodass man die Selection sehen kann. Das ganze wird ausgelöst durch einen Klick auf Button1.
     Zu dem mit Mehrfachselektion, kann ich leider auch nicht helfen. Der veränderte Code hieße jetzt folgendermaßen:

    Code Snippet

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_ Handles Button1.Click

            If Me.TextBox1.Text.ToLower.Contains(Me.TextBox2.Text.ToLower) Then
                Me.TextBox1.Select(Me.TextBox1.Text.ToLower.IndexOf(Me.TextBox2.Text.ToLower), Me.TextBox2.Text.Length)
                Me.TextBox1.Focus()
            End If
     End Sub


    Montag, 5. Januar 2009 08:58

Alle Antworten

  • Hi,

    erst mal solltest du prüfen, ob der Text in Textbox1 überhaupt das zu suchende enthält, das machst du mit ".contains". Danach kannst du dann mit ".IndexOf()" auf die Position zugreifen. Zum Schluss musst du noch den Focus auf Textbox1 setzen, da sonst die Auswahl nicht sichtbar ist. Dein Code lautet also:

    Code Snippet

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If Me.TextBox1.Text.Contains(Me.TextBox2.Text) Then
                Me.TextBox1.Select(Me.TextBox1.Text.IndexOf(Me.TextBox2.Text), Me.TextBox2.Text.Length)
                Me.TextBox1.Focus()
            End If
        End Sub

    Sonntag, 4. Januar 2009 14:52
  • Der Nachteil von diesem Code ist jedoch, dass immer nur das erste Wort, welches übereinstimmt sellektiert wird jedes weitere leider nicht. Groß- Kleinschreibung muss leider auch beachtet werden
    Sonntag, 4. Januar 2009 16:11
  •  BigG-FTW Schrieb:
    Der Nachteil von diesem Code ist jedoch, dass immer nur das erste Wort, welches übereinstimmt sellektiert wird jedes weitere leider nicht. Groß- Kleinschreibung muss leider auch beachtet werden
    Oh, das ist wahr. Zumindest den Teil mit Groß-/Kleinschreibung kann man beheben, wenn man jeweils hinter TextBoxx.Text noch ein ".ToUpper" oder ".ToLower" einfügt (was man halt lieber mag). Das bewirkt dann dass der ganze Text zu Groß-/Kleinbuchstaben verändert wird. 

    @"unten stehender Code"
    Also, zu erst wird der Text aus Textbox1 genommen und in einer Version aus nur Kleinbuchstaben wird überprüft, ob eine "Kleinbuchstabenversion" des Textes aus Textbox2 darin vorkommt. Ist dies der Fall, so wird in Textbox1 das erste Vorkommen des Textes selectiert. Am Ende bekommt noch die Textbox1 den Focus, sodass man die Selection sehen kann. Das ganze wird ausgelöst durch einen Klick auf Button1.
     Zu dem mit Mehrfachselektion, kann ich leider auch nicht helfen. Der veränderte Code hieße jetzt folgendermaßen:

    Code Snippet

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_ Handles Button1.Click

            If Me.TextBox1.Text.ToLower.Contains(Me.TextBox2.Text.ToLower) Then
                Me.TextBox1.Select(Me.TextBox1.Text.ToLower.IndexOf(Me.TextBox2.Text.ToLower), Me.TextBox2.Text.Length)
                Me.TextBox1.Focus()
            End If
     End Sub


    Montag, 5. Januar 2009 08:58