2012-11-18 27 views
1

我目前能够搜索一些文本并找到第一个匹配的字符串。这从左到右移动,并且每次点击“btnFindNext”时,下一个匹配的字符串被选中。如何使查找逆向方法继续移动?

但是,我现在想让它成为可能,以便搜索从右向左移动。我正在使用RichTextBoxFind.Reverse方法,实际上这会从右侧选择第一个匹配的字符串。但是,当用户再次单击“btnFindNext”时,未选择下一个匹配的字符串。任何想法为什么?

编辑:我已经添加了我目前用来从左至右选择的代码。

用户首先按'查找',这是代码。

startFrom = RichTextBox.Find(textToFind.Text, 
RichTextBox.SelectionStart, RichTextBoxFinds.None) 

If lastposition <> -1 Then 
RichTextBox.SelectionStart = startFrom 
RichTextBox.SelectionLength = textToFind.Text.Length 
startFrom = startFrom + 1 
    Else 
     MsgBox(cboFFindWhat.Text & " Not Found") 
    End If 

用户然后按下'FindNext'。这是代码。

startFrom = RichTextBox.Find(textToFind.Text, startFrom, RichTextBoxFinds.None) 
If startFrom <> -1 Then 
RichTextBox.SelectionStart = startFrom 
RichTextBox.SelectionLength = textToFind.text.length 
startFrom = startFrom + 1 
Else 
MsgBox(textToFind.Text & " Not Found") 
End If 

以上两段代码完美地用于搜索文档。我现在想让它成为可能,以便用户可以向上搜索。这是如何实现的? 任何帮助将不胜感激。先谢谢你!

+0

我编辑了我的问题,并从左到右选择了我的代码。 – user1821387

+0

哟看过[创建一个寻找形式为richtextbox](http://stackoverflow.com/questions/837331/how-do-i-create-a-find-form-for-a -richtextbox)查看第二个答案。如果这不能帮助您发布反向部分的代码。 – PatFromCanada

+0

嗨帕特,我试过第二个答案,它不适合我。我的代码与反向部分相同。我相信我上传的代码有错误,我会更新它。我的问题中的代码是我用于正常查找的代码。我将如何将其转变为相反的? – user1821387

回答

1

尝试此代码的反向部分。每次运行它时,都会找到以前的事件。 (然后当你开始时它会重新开始。)

Dim start As Integer 
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    If start = 0 Then start = RichTextBox1.Text.Length 
    start = RichTextBox1.Find("findme", 0, start, RichTextBoxFinds.Reverse) 
    MessageBox.Show(start.ToString) 
End Sub