2014-10-27 2 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

Не знаете, что вы пытаетесь сделать с этой переменной temp ... и вы можете написать что-то, чтобы очистить цвет фона, когда закончите.

Во всяком случае, вы можете сделать следующее для вашей кнопки «найти»:

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 для более подробной информации.

Редактировать: Чтобы найти количество результатов попадания, вы можете просто подсчитать цикл выделения. Потому что вам нужно пройти все слова, чтобы выделить их, информация уже есть.

Пример кода:

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 

И граф будет содержать сумму результата.

+0

Спасибо! Еще одна вещь, как я могу получить количество результатов, например. в предложении «Да Нет Нет, тогда нет да» есть 3 «Нет», как я могу получить 3? как подсчет слова, когда я печатаю «Нет» и искал его? – Zer0

+0

@ F4z Просто подсчитайте, сколько раз ваш цикл while работает – jack3694078

+0

как я могу это сделать? – Zer0

Смежные вопросы