2016-06-08 3 views
0

다음과 같은 문자열이 있습니다. [1] 새해 복 많이 받으세요 [2] Happy Birthday [3] Happy Together 숫자 1,2,3을 빨강 색으로 포맷하고 싶습니다. 그래서 문자열을 RichTextBox에 저장하고 아래 코드와 같이 검색 및 형식을 지정합니다. (내가하는 일은 "["과 "]"를 찾고 전역 변수 (i, j)에 저장하고 매번 얻을 수 있습니다. . 내가 새로운 세트의 형식화하는 이벤트가 해고 J 그러나, 내가 무엇을 기대하지 않습니다. (RichTextBox에 대괄호 안에 텍스트 서식을 지정하는 방법은 무엇입니까?

Public i, j As Integer 
Dim s As String = "[1] Happy New year [2] Happy Birthday [3] Happy Together" 

'Button Code 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

     Dim count As Integer = 0 
     rtfbuffer.Text = s 
     rtfbuffer.Font = New Font("Tahoma", 12, FontStyle.Bold) 
     rtfbuffer.ForeColor = Color.Black 

     Do While count < s.Length - 1 


      If s.Chars(count) = "[" Then 
       i = count 
       count += 1 
      ElseIf s.Chars(count) = "]" Then 
       j = count + 1 

       count += 1 
       rtfbuffer.Select(i, j) 
       rtfbuffer.SelectionColor = Color.Red 

      Else 
       count += 1 
      End If 

      Loop 

을 마지막으로, 나는 "[]"레드 내에 만 먼저 텍스트를 얻을 수 있습니다 .. 봐 코드, reamaining 텍스트를 통과하지 않는 이유를 이해할 수 없다. 당신이 내게 그것을 수정하는 방법을 보여줄 수있다?

답변

0

Select 메서드의 두 번째 인수는 텍스트의 길이입니다. 선택하십시오. MSDN 참조 .

공공 하위 선택

매개 변수

시작 유형 (정수로 시작, 길이 정수 현재) : 텍스트 내에서 현재 텍스트 선택의 첫 번째 문자의 선택 System.Int32 위치 상자.

length 형식 : System.Int32 선택할 문자 수입니다.

그래서, 당신은 전화 코드에 Select 당신은 대신 jj - i를 제공하여 선택 (다음 강조 표시) 할 수있는 길이를 계산할 수 있습니다. 'end index'(j)가 실제로 길이 3과 동일하기 때문에 코드에서 처음으로 작동합니다.

rtfbuffer.Select(i, j - i) 
rtfbuffer.SelectionColor = Color.Red 
+0

맞습니다. @남자 이름. 좋은 대답 ~ ^^ ". 대단히 감사합니다 ~ –