2013-06-01 4 views
1

저는 시각적 인 기초로 작업 중이며 richtextbox에 입력 된 각 단어를 검색하는 기능을 만들고 있습니다. 단어가 RichTextBox2에 입력되면 RichTextBox1에서 검색이 수행되고 텍스트가 강조 표시됩니다.텍스트 검색 및 바꾸기

RichTextBox1RiochTextBox2는 읽기 전용, RichTextBox2은 텍스트 (단어의 디렉토리)를 기본했다 RichTextBox1 동안 코드를 통해에 기록 될 수 있습니다. RichTextBox2's 텍스트

RichTextBox3.Text = RichTextBox2.Text 

의 사본을 보유 RichTextBox3도있다이 함수에 대한 코드입니다.

public class textsearch 
Private intPosition As Integer 

Private Sub NextButton_Click(sender As Object, e As EventArgs) Handles NextButton.Click 
    generatekanji() 

    ' Static intStart As Integer 
    'used to select compare method 
    Dim intStart As Integer 
    Dim objType As Object 
    Dim lastWord As String = RichTextBox2.Text.Split(" ").Last 
    objType = CompareMethod.Text 

    'set starting position to 1 
    intPosition = 1 
    'use the InStr function to look up a staring position of a search string in a given text box using objType (case-insensitive or case-sensitive) 
    intStart = InStr(intPosition, RichTextBox1.Text, lastWord, objType) ' what it searches 
    If intStart > 0 Then 

     'set starting select position on a textbox and select the search string 
     RichTextBox1.SelectionStart = intStart - 1 
     RichTextBox1.SelectionLength = lastWord.Length 'highlights the searched word 
     RichTextBox1.Select() 

    End If 

End Sub 
End Class 

이것은 매우 유용한 기능이지만 주요 문제는

RichTextBox1 읽기 전용되기 때문에 (1), 당신은 "땡"는 검색이 수행되고 있으며, 매우 귀찮을 때마다 소리, 기어 .

(2) 단어가 발견 될 때마다 문자를 선택하거나 단어 옆에있는 문자로 RichTextBox3을 대체하는 방법을 찾을 수 없습니다.

누군가이 문제를 해결할 수 있습니까?

답변

0

내가 검색 단어가 읽기 전용하여 RichTextBox에, 아니 dinging으로 강조되어이 코드를 사용하는 경우 :

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    Dim SearchWord As String = RichTextBox2.text 
    Dim SelStart As Integer = InStr(RichTextBox1.Text, SearchWord, CompareMethod.Text) 
    If SelStart > 0 Then 
     RichTextBox1.Select(SelStart - 1, SearchWord.Length) 
     RichTextBox1.Focus() 
     For Each line In RichTextBox1.Lines 
      If line.Contains(SearchWord) Then 
       RichTextBox3.Text = line.Split()(0) 
      End If 
     Next 
    End If 
End Sub 

dinging가 generatekanji() 루틴에서 오는 경우 내가 궁금합니다.

+0

아니요 generatekanji()는 아무 것도 아닙니다. 이 코드는 여전히 딩 소리를 발생시키고 richtextbox2에 입력 된 모든 단어를 검색하는 라이브 검색 인 i 검색을 검색하는 방법으로 한 번 검색합니다. 그래서 richtextbox2 텍스트가 변경되는 동안 그것은 검색을 할 것입니다. –

+0

덕분에 문제가 해결되었습니다. richtextbox3의 검색 단어를 richtextbox1의 검색 단어 옆에있는 문자로 대체하는 방법에 대한 아이디어. '写真 shashin의 photo' 는'雲 Kumo는 cloud' '赤 아카 Red' 내가 rtb3에 한자를 추가하는 내 대답을 편집 '赤 아카이 Red' –

+0

@RDixon. 당신이 다른 단어에 포함되어 있을지도 모르는 검색 단어가 있을지 확신하지 못했기 때문에 전체 단어 또는 단어의 일부를 찾았는지 확인할 유효성 검사를 추가하지 않았지만 바른 길. – tinstaafl