사용자가 다음과 같은 규칙에 따라 색상 코드가있는 텍스트를 입력 할 수있는 RichTextBox가 있습니다.RichTextBox의 텍스트를 효율적으로 색상 코딩
{ } () | . (dot)
이러한 문자는 빨간색이어야합니다.[A-Z] [a-z] [0-9]
밑줄과 하이픈 어두운 회색이어야합니다.- 다른 모든 항목은 파란색이어야합니다.
지금은 상자의 내용이 바뀌면이 코드가 나타납니다. 이 메서드는 텍스트 상자의 내용에서 변경된 내용이있을 때마다 호출됩니다.
public void colorCode() {
for (int i = 0 ; i < rtb.Text.Length ; i++) {
rtb.Select(i,1); //select a single character
char ch = rtb.Text[i];
if (ch == '{' || ch == '}' ||
ch == '(' || ch == ')' ||
ch == '.')
rtb.SelectionColor = Color.Red;
else if (isAlphaNumeric(ch))
rtb.SelectionColor = Color.DarkGrey;
else
rtb.SelectionColor = Color.Blue;
}
}
수백 개의 문자가있는 경우 매우 느릴 수 있습니다. 이 상황을 어떻게 개선 할 수 있습니까?
변경 될 때마다 실행하지 않고 업데이트를 대기시킬 수 있습니다. [this] (http://stackoverflow.com/q/15587767/1997232)를 참조하십시오. – Sinatr
@Sinatr 더 정교한 답변을 많이 주시면 감사하겠습니다. –
아마도 [AvalonEdit] (http://avalonedit.net)과 같은 구문 강조를 지원하는 편집기를 사용할 수 있습니다. [documentation] (http://avalonedit.net/documentation/)에서 [자체 규칙 정의 방법]을 찾을 수 있습니다 (http://avalonedit.net/documentation/html/4d4ceb51-154d-43f0-b876-ad9640c5d2d8). .htm). – Oliver