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

上記の 2 つのコード セクションは、ドキュメントを下方向に検索するのに最適です。ユーザーが上向きに検索できるようにしたいと思います。これはどのように達成されますか?どんな助けでも大歓迎です。前もって感謝します!

4

1 に答える 1

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
于 2012-11-19T14:35:53.937 に答える