본문 바로가기
VB.net

단어 검색 및 자동 스크롤

by 호야호잇 2019. 6. 3.

Private Sub FindAndScroll(ByVal 검색단어 As String, ByVal 선택RichtextboxEX As RichTextBoxEx)
        Dim index As Integer = 0
        Dim temp As String = 선택RichtextboxEX.Rtf
        선택RichtextboxEX.Rtf = temp

        While index < 선택RichtextboxEX.Text.LastIndexOf(검색단어)
            선택RichtextboxEX.Find(검색단어, index, 선택RichtextboxEX.TextLength, RichTextBoxFinds.None)
            index = 선택RichtextboxEX.Text.IndexOf(검색단어, index) + 1
        End While

        Dim intstartIndex As Integer = 0

        ''// 입력한 값이 결과내용에 존재하면 해당 위치 시작점을 가져옴
        intstartIndex = 선택RichtextboxEX.Text.IndexOf(검색단어, intstartIndex)

        '// 결과값이 마지막에 도달하면 초기설정.
        If intstartIndex = -1 Then
            '// 결과값이 존재하지 않으면 이하 실행되지 않도록...
            intstartIndex = 선택RichtextboxEX.Text.IndexOf(검색단어, 0)

            If intstartIndex = -1 Then
                intstartIndex = 0
                Exit Sub
            End If
        End If

        선택RichtextboxEX.Select(intstartIndex, 검색단어.Length) '//문자 선택
        '선택RichtextboxEX.SelectionColor = Color.Red
        ' 선택RichtextboxEX.SelectionBackColor = Color.LightGreen
        '//혹은 아래
        '선택RichtextboxEX.SelectionStart = intstartIndex '// 문자 선택 시작점
        '선택RichtextboxEX.SelectionLength = textbox2.Text.Length  '//문자 선택 크기
        '선택RichtextboxEX.Select()   '//문자 선택
        선택RichtextboxEX.ScrollToCaret() '//선택된 문자위치로 스크롤 이동

        '// 처음부터 값이 존재하는 경우 다음값 선정에 어려워 +1 값 설정
        If intstartIndex = 0 Then
            intstartIndex = 1
        Else '// 다음값을 선택해야 하므로 +1 값 설정.
            intstartIndex = intstartIndex + 1
        End If
    End Sub