본문 바로가기

Textbox

(2)
TextBox 에 2바이트 문자 입력중 삭제시 Caret 문제 WPF 의 TextBox에서 2바이트 문자 (double-byte character) 입력시, 이런저런 문제가 발생한다.(Winform TextBox에서는 발생하지 않는 문제이기 때문에 WPF TextBox 의 문제라는 생각함) 엔터를 쳐서 새로운 라인을 삽입하고 바로 2바이트 문자를 입력하다가 Backspace로 삭제를 하면 TextBox 의 Caret 이 윗줄 맨 뒤에서 깜빡이고 있다는 것이다.더 웃긴 건 거기서 다시 입력을 하면 다시 원래 위치인 아래 줄에서 입력이 시작된다.만약 엔터를 친다면 현재 Caret 이 위치한 라인의 아래 아래 줄로 내려가 버린다. 또한 2바이트 문자인 한글, 일본어에 따라서도 Caret 이 잘못 움직이는 것도 서로 다르게 움직인다. 문제를 해결하기 위해서는 우선 12te..
WPF TextBox Caret 의 좌표 가져오기 WPF 의 TextBox 를 이용해서 현재 입력하고 있는 문자열에 자동완성 비스무리한 기능을 넣으려고 하다 보니 현재 Caret (현재 커서가 간 위치) 위치에 삽입할 수 있는 문자열을 표시할 팝업 창을 보여줘야 했다. 그러다 보니 그 팝업 창을 보여주기 위해서 Caret 의 좌표가 필요했다. public Point GetCaretPos(TextBox textBox) { int tRowIdx = textBox.GetLineIndexFromCharacterIndex(textBox.CaretIndex); int tLineFir = textBox.GetCharacterIndexFromLineIndex(tRowIdx); int tColIdx = textBox.CaretIndex - tLineFir; Format..