Ребят, еще раз сорки..
Вчера задавал почти аналогичный вопрос...
http://www.vbnet.ru/forum/show.aspx?id=207267
вот код:
' Поиск в TextBox
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Вычисляем начало (первый символ искомого слова или строки)
Dim SelectStart As Integer = InStr(TextBox1.Text, TextBox2.Text, vbTextCompare)
' Вычисляем длину искомого символа, слова или строки
Dim SelectLen As Integer = Len(TextBox2.Text)
If SelectStart > 0 Then ' Если ищем не пустое место, то
TextBox1.Focus() ' фокус на TextBox и
TextBox1.Select(SelectStart - 1, SelectLen) ' выделяем искомый фрагмент.
End If
End Sub
До ответа вроде сам допер..Но появился следующий вопрос!
На форме еще имеется кнопка "Найти далее", соответственно нажав на нее - в текстбоксе где ищется сочетание (буква, символ, слово) - доллжно это сочетание выделиться, если таковое конечно есть..
Тоесть нужно найти и выделить не первое похожее сочетание , а следующее за ним, и соответственно последующее за следующем (если такое есть )...Сори за туфтологию..
Кароче обычный поиск в блокноте, с функцией "Найтид" и "Найти далее"
он наверное не понимает, что InStr возвращает номер символа найденной строки, а первый параметр этой функции указывает с какого по счету символа нужно искать.
А если он это понимает, то он просто мозгами думать не хочет.
а первый параметр этой функции указывает не на то с какого по счету символа нужно искать, а выражение для поиска...тоесть там где нужно найти , и уже второй параметр искомое....если Вы про это
Function InStr([Start], [String1], [String2], [Compare As VbCompareMethod = vbBinaryCompare])
Member of VBA.Strings
Returns the position of the first occurrence of one string within another
кароче! не проще было написать совет или код?! нахэ мне твои поучительные довыды...я не за тем сюда обращался, а проблему решил, и опять же нехэ писать про лень и про думать, любит не любит
Итак, на форме имеем:
TextBox1 - сюда мы вводим текст, который ищем TextBox2 - сюда мы вводим текст, в котором ищем. Для этого контрола НЕОБХОДИМО установить свойство HideSelection = False - это чтоб не гасилось выделение при работе на другом контроле, в частности, при нажатии на кнопку поиска.
Желательно также MultiRow = True - чтоб по-человечески вбивать многострочный текст.
И Button1 - кнопка, по нажатию на которую будет происходить поиск.
Далее:
Объявляем переменную уровня класса:
Dim start as integer = 1
т.е. пишем эту строчку под строчкой
PublicClass Form1
ну и код для кнопки:
Dim STR AsString = Me.TextBox2.Text
Dim SubSTR AsString = Me.TextBox1.Text
Dim L AsInteger = Me.TextBox1.Text.Length
Dim Ind AsInteger
Ind = InStr(Me.start, STR, SubSTR)
If Ind > 0 Then
Me.TextBox2.SelectionStart = Ind - 1
Me.TextBox2.SelectionLength = L
Me.start = Ind + L
Me.TextBox2.ScrollToCaret()
Else
Me.TextBox2.SelectionStart = 0
Me.TextBox2.SelectionLength = 0
Me.start = 1
Me.TextBox2.ScrollToCaret()
MsgBox("Пройден конец документа", MsgBoxStyle.Information)
EndIf
Все, при поиске найденный фрагмент подсвечивается, при повторном - подсвечивается следующий. Содержимое TextBox2 прокручивается при необходимости. Чтоб не бегать по кругу, а также в случае отрицательных результатов вылетит сообщение: "Пройден конец документа"
I'm, ты охуел просто!
Тебе AWP четко и ясно подкинул идею.
Не такая уж и сложность была ее реализовать, так что про "думать лень" - весьма актуально сказано