Highlight text?

Status
Niet open voor verdere reacties.

HellupUandMe

Gebruiker
Lid geworden
21 jan 2007
Berichten
247
Hoe kan ik een searchform maken?
Ik heb dus een form, form1 genaamd waar zich een textbox1 bevindt.
Je doet ctrl+f en form2 verschijnt met een textbox waar je een zoekopdracht moet opgeven. Nu wil ik dus dat als je daar iets intypt en je op ok drukt je zoekopdracht wordt geselecteerd in textbox1 van form1
 
Dit is niet de hele code, maar ik denk dat je meeste moeite bespaart.
- Je moet zelf de code verzinnen om in textbox te zoeken en te kleuren

Code:
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim SearchFrm As Form2 = New Form2()
        AddHandler SearchFrm.SearchTextUpdated, AddressOf SearchTheText

        SearchFrm.Show()
    End Sub

    Private Sub SearchTheText(ByVal sender As Object, ByVal e As SearchTextEventArgs)
        MessageBox.Show(e.SearchText)
    End Sub
End Class

Code:
Public Class SearchTextEventArgs
    Inherits System.EventArgs

    Public Sub New(ByVal searchText As String)
        If String.IsNullOrEmpty(searchText) Then Return
        _searchText = searchText
    End Sub

    Private _searchText As String = String.Empty

    Public ReadOnly Property SearchText() As String
        Get
            If String.IsNullOrEmpty(_searchText) Then _searchText = String.Empty
            Return _searchText
        End Get
    End Property
End Class

Code:
Public Class Form2
    Public Delegate Sub SearchTextUpdateHandler(ByVal sender As Object, ByVal e As SearchTextEventArgs)
    Public Event SearchTextUpdated As SearchTextUpdateHandler


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim args As SearchTextEventArgs = New SearchTextEventArgs(TextBox1.Text)
        RaiseEvent SearchTextUpdated(sender, args)
    End Sub
End Class

Ik hoop je hiermee een stap in de goede richting te hebben geholpen
 
Toch nog wat geprobeerd: Text wordt opgezocht in een RichTextBox op Form1.
Je moet het zelf nog even aanpassen.

Code:
    Private Sub SearchTheText(ByVal sender As Object, ByVal e As SearchTextEventArgs)
        MessageBox.Show(e.SearchText)
        start = 0
        indexOfSearchText = 0

        Dim txtSearch As String = e.SearchText
        Dim startindex As Integer = 0

        If txtSearch.Length > 0 Then
            startindex = FindMyText(txtSearch.Trim(), start, rtb.Text.Length)
        End If

        ' If string was found in the RichTextBox, highlight it
        If startindex >= 0 Then
            ' Set the highlight color as red
            rtb.SelectionColor = Color.Red
            ' Find the end index. End Index = number of characters in textbox
            Dim endindex As Integer = txtSearch.Length
            ' Highlight the search string
            rtb.Select(startindex, endindex)
            ' mark the start position after the position of
            ' last search string
            start = startindex + endindex
        End If
    End Sub

    Public Function FindMyText(ByVal txtToSearch As String, ByVal searchStart As Integer, ByVal searchEnd As Integer) As Integer
        ' Unselect the previously searched string
        If searchStart > 0 AndAlso searchEnd > 0 AndAlso indexOfSearchText >= 0 Then
            rtb.Undo()
        End If

        ' Set the return value to -1 by default.
        Dim retVal As Integer = -1

        ' A valid starting index should be specified.
        ' if indexOfSearchText = -1, the end of search
        If searchStart >= 0 AndAlso indexOfSearchText >= 0 Then
            ' A valid ending index
            If searchEnd > searchStart OrElse searchEnd = -1 Then
                ' Find the position of search string in RichTextBox
                indexOfSearchText = rtb.Find(txtToSearch, searchStart, searchEnd, RichTextBoxFinds.None)
                ' Determine whether the text was found in richTextBox1.
                If indexOfSearchText <> -1 Then
                    ' Return the index to the specified search text.
                    retVal = indexOfSearchText
                End If
            End If
        End If
        Return retVal
    End Function
 
Dit is niet de hele code, maar ik denk dat je meeste moeite bespaart.
- Je moet zelf de code verzinnen om in textbox te zoeken en te kleuren
Ooh dat is juist de code die ik zoek, wat doet de code dan die je gegeven hebt?
En is dit voor vb6? Ik gebruik namelijk vb2005. In ieder geval heel erg bedankt voor de moeite! :thumb:
 
POST 1:
Die eerste post zorgt ervoor dat je een event verstuurt vanaf de ene form naart de andere.
Als je dit niet met een event doet, dan blijft de app hangen in een functie.

In de custom event zit de string die je zoekt.

POST 2:

Deze zoekt de tekst op in de richtextbox en maakt deze rood.
echter zoekt de text maar 1 keer op.

PS
- ook de ctrl+f zit er nog niet in. Wordt nu gedaan door een button.
- Dit is VB.NET -> Geschikt voor jou dus.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan