본문
RichTextBox컨트롤의 한글 깨짐 문제 해결하기
데브피아에서 류대열 (baddemon)님이 작성하신 "RichTextBox 컨트롤의 한글관련 오류를 수정해 보아요..." 게시물에 관한 포스팅이다. 핵심이 되는 부분은 아래 첨부파일에서, RichTextBox를 상속받는 RichTextBoxIme.cs로서, 특히 Text의 setter와 getter를 오버라이드 한 부분이다. (코드를 놓고 설명하기에는 분량이 많다)
'감사합니다' '라는 글을 입력할 때, RichTextBox에서 TextChanged이벤트 핸들러로 텍스트의 변화를 인지하고, 이 내부에서 Text 속성을 사용하는 코드가 존재하는 경우, 위의 동영상에서의 감ㅅㅏㅎㅏㅂ니다와 같이, 한글의 초,중,종성의 조합이 원활하지 않는다는것이 문제이다. 이것은 RichTextBox가 16비트 시절부터 존재하였지만 그때부터 개선없이 코드가 이어져 오는 바람에 현재의 발전된 환경에서 원활하게 동작하지 않기 때문이라 한다(아래 링크에서 참고)
이런 문제점과, 이런 문제점을 해결해놓은 코드가 사라질 지도 모르기 때문에, 그리고 개인적인 기억을 위하여, 아래 첨부파일과 함께 포스팅 한다. 다시 언급하지만 아래 첨부파일은, 위의 동영상에서와 같이 실행되는 프로젝트(csproj)로서, 류대열님이 작성하신 코드이다. (이런 작업을 해주심에 매우 감사하게 생각한다) 참고로 이 코드에서 Text 속성을 반복해서 사용할 경우 오류가 발생할 수 있다고 하니 코드를 직접 고치거나(역시 귀찮아서 생략), 다른 변수에 저장하여 활용하는 방법을 사용해야 한다.
기타 링크
리치 텍스트 박스에서 한글 깨짐 현상에 질문드립니다. : textbox를 쓰자, RichTextBox는 멀티스레딩에 고질적인 문제가 있다
RichTextBox의 TextChanged 이벤트 한글깨짐 : 즉 TextLength는 사용에 문제가 없다
RichTextBox 의 한글 문제점 : 해결책은 없지만 자세하게 설명해 놓은 글. KeyPress, KeyDown, KeyUp 에도 문제가 있다는것.
댓글