WPF RichTextBox 에서 대문자만 입력가능한 것처럼 보이게

아무리 찾아봐도 RichTextBox 에서 입력 마스크가 없다.
AvalonControlLibray에 MaskedTextBox가 있어서 사용해봤는데 답이 안되었다.

구글링하다가 비슷한 코드를 발견하고 수정했다. richTextBox2_TextChanged가 현재 핸들러이다.



            RichTextBox _rtbEdit = sender as RichTextBox;
            _rtbEdit.TextChanged -= richTextBox2_TextChanged;
           
            string sPrev = _rtbEdit.Selection.End.GetTextInRun(LogicalDirection.Backward);
            int i;
            for (i = sPrev.Length - 1; i > -1; i--)
            {
                if (Char.GetUnicodeCategory(sPrev[i]) != UnicodeCategory.NonSpacingMark) break;
            }
            if (i == -1) return;



            // replace target character with new, keeping any following nonspacing char
            StringBuilder sb = new StringBuilder();
            sb.Append(sPrev[i]);
            if (i + 1 < sPrev.Length) sb.Append(sPrev.Substring(i + 1));

            string sNew = (sb.ToString()).ToUpper();




            _rtbEdit.Selection.End.DeleteTextInRun(i - sPrev.Length);
            _rtbEdit.Selection.End.InsertTextInRun(sNew);





            _rtbEdit.CaretPosition = _rtbEdit.Selection.End.GetPositionAtOffset(sNew.Length);

            _rtbEdit.TextChanged += richTextBox2_TextChanged;

댓글

이 블로그의 인기 게시물

C#에서 포인터 사용

WPF RichTextBox 와 Document의 바인딩

WPF 이미지위에 라인 그리기(WPF DrawLine on exist Image)