2014-10-27 50 views
4

基本上我有一个RichTextBox,TextBox和一个按钮。 RichTextBox中包含一些文本,文本框用于输入单词,按钮用于查找它。到目前为止,我正在使用:创建搜索并浏览每个结果

Dim index As Integer = 0 
Dim temp As String = txtbx_Write.Text 
txtbx_Write.Text = String.Empty 
txtbx_Write.Text = temp 

While index < txtbx_Write.Text.LastIndexOf(TextBox1.Text) 
    txtbx_Write.Find(TextBox1.Text, index, txtbx_Write.TextLength, RichTextBoxFinds.None) 
    txtbx_Write.SelectionBackColor = Color.DarkGray 
    index = txtbx_Write.Text.IndexOf(TextBox1.Text, index) + 1 
End While 

基本上,这样做是当我键入例如“The”,如果RichTextBox中有“The”,它将为该单词设置一个背景颜色,并且它会为每个“The”单词执行此操作。

我想要做的是,当我输入单词“The”时,将会有一个标签和结果数量,每次用户点击“查找”按钮时,它会选择单词“The”并继续选择并继续,直到没有更多。

非常像本机记事本查找功能,它选择并浏览每个单词。

回答

4

不知道你想用这个临时变量做什么......你可能想写一些东西来清除背景颜色,当你完成。

无论如何,你可以做你的“查找”按钮,如下:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    If Not RichTextBox1.Focused Then 
     RichTextBox1.Focus() 
    End If 
    RichTextBox1.Find(TextBox1.Text, RichTextBox1.SelectionStart + RichTextBox1.SelectionLength, RichTextBoxFinds.None) 
End Sub 

阅读查找MSDN方法的更多细节。

编辑:为了找到命中结果的数量,您可以简单地计算while循环中的“突出显示”。因为你必须通过所有的单词来突出显示它们,所以信息已经存在。

示例代码:

Dim index As Integer = 0 
Dim count As Integer = 0 
While index < RichTextBox1.Text.LastIndexOf(TextBox1.Text)   
    RichTextBox1.Find(TextBox1.Text,index,RichTextBox1.TextLength, 
         RichTextBoxFinds.None) 
    RichTextBox1.SelectionBackColor = Color.DarkGray 
    index = RichTextBox1.Text.IndexOf(TextBox1.Text, index) + 1 
    count = count + 1 
End While 

和COUNT将举行成果量。

+0

谢谢!还有一件事,我怎么能得到结果的数量,例如在“是否否然后否”的句子中有3个“否”,我怎么能得到3?就像我输入“否”并搜索它时的单词数量一样? – Zer0 2014-10-28 04:02:59

+0

@ F4z只需统计你的while循环运行多少次 – jack3694078 2014-10-28 04:46:59

+0

我该怎么做? – Zer0 2014-10-28 09:11:18