2009-09-21 3 views
1

RichTextBox의 내용이 변경 될 때 서식을 다시 지정하려는 RichTextBox가 있습니다. TextChanged 이벤트 핸들러가 있습니다.WinForms RichTextBox : TextChanged에서 서식을 지정하는 방법은 무엇입니까?

서식을 다시 지정하면 (선택한 영역의 색이 바뀜) TextChanged 이벤트가 트리거됩니다. TextChange 이벤트, 형식 재 지정, TextChange 이벤트, 형식 재 지정 등의 끝없는 반복이 발생합니다.

앱에서 발생한 텍스트 변경과 사용자가 보낸 텍스트 변경을 어떻게 구분할 수 있습니까?

텍스트 길이를 확인할 수는 있지만 확실하지는 않습니다. 당신은 루프를 만드는에서 추가 TextChanged 이벤트를 중지

private bool _isUpdating = false; 
private void Control_TextChanged(object sender, EventArgs e) 
{ 
    if (_isUpdating) 
    { 
     return; 
    } 

    try 
    { 
     _isUpdating = true; 
     // do your updates 
    } 
    finally 
    { 
     _isUpdating = false; 
    } 
} 

그 방법 :

답변

3

당신은 당신이 TextChanged 처리 내부에 이미 있는지 여부를 나타내는 부울 플래그를 가질 수 있습니다.

+0

이것은 좋지만, _isupdating은 응용 프로그램이 핸들러 내부가 아닌 richtextbox 텍스트를 변경하는 곳이면 어디에서나 사용해야합니다. – xpda