如何在Visual Basic中的RichTextBox中查找并突出显示单词的下一个实例?

时间:2018-10-12 07:47:40

标签: vba

这是我目前正在使用的Visual Basic Windows应用程序表单。

https://i.snag.gy/EzoXr3.jpg

如何像此视频中那样为“查找下一个”按钮编写代码。

https://www.dropbox.com/s/u93h9jn605uhwsu/CPT341Project2Walkthrough.avi?dl=0

如果我可以找到一种语法来将索引变量存储在findnext按钮的private子之外,则可以解决此问题。因为每次我单击findnext按钮,我都必须在文件文本中找到该单词的相应实例。或者,我可以应用一些代码在第一次出现后在其余文本的子字符串中找到它。

下面是我的代码:

Public Class Form1
'Enter your name
'Date
'Class - CPT 341 VB.NET NJIT

Private Sub openBtn_Click(sender As Object, e As EventArgs) Handles openBtn.Click
    If OpenFileDialog.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
        fileText.Text = My.Computer.FileSystem.ReadAllText(OpenFileDialog.FileName)
    End If
End Sub

Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
    'Bring the form to the inital state for a different search
    Dim temp As String = fileText.Text
    fileText.Text = temp
    outputIndex.ForeColor = Color.Black

    'MessageBox to show error for empty search textbox
    If inputText.Text = "" Then
        MessageBox.Show("Enter Text to Search", "CPT 341 Fall 2018 - Project 2")
    Else
        'Declare variables
        Dim txt As String : Dim x As Integer = 0 : Dim output As String
        txt = inputText.Text
        If fileText.Text.IndexOf(txt) <> -1 Then
            Dim idx As Integer = CStr(fileText.Text.IndexOf(txt))
            outputIndex.Text = idx

            'Find and highlight the first word searched in the RichTextBox
            fileText.Find(txt, x, fileText.TextLength, RichTextBoxFinds.None)
            fileText.SelectionBackColor = Color.Yellow

            'populate the string with ANSI numbers
            output = Asc(txt(0))
            For x = 1 To (txt.Length - 1)
                output = output & " " & Asc(txt(x))
            Next x
            outputANSI.Text = output

        ElseIf fileText.Text = "" Then
            MessageBox.Show("Please open a file to search from", "CPT 341 Fall 2018 - Project 2")

        Else
            outputIndex.Text = txt & " is not found"
            'Bring the form to inital state
            fileText.Text = temp
            'Change the index textbox text color to red
            outputIndex.ForeColor = Color.Red
            'Empty the ANSI textbox
            outputANSI.Text = ""
        End If
    End If

End Sub

Private Sub btnFind_Click(sender As Object, e As EventArgs) Handles btnFind.Click

    Dim txt As String = inputText.Text
    Dim Index As Integer = fileText.Text.IndexOf(txt) + txt.Length
    'Find and highlight the word searched in the RichTextBox other than first occurrence

    fileText.Find(txt, Index, fileText.TextLength, RichTextBoxFinds.None)
    fileText.SelectionBackColor = Color.Yellow
    Index = fileText.Text.IndexOf(txt, Index) + txt.Length + 1

End Sub

Private Sub btnWords_Click(sender As Object, e As EventArgs) Handles btnWords.Click
    wordCount.Text = fileText.Text.Split(" ").Length
End Sub

Private Sub btnChars_Click(sender As Object, e As EventArgs) Handles btnChars.Click
    charCount.Text = fileText.Text.Length
End Sub
End Class

否则任何其他建议都会有所帮助。

0 个答案:

没有答案