2012-02-01 2 views
2

매우 간단 할 수 있습니다.텍스트 상자 SelectionStart, SelectionEnd 및 Caret (커서) 위치

나는 WinForm, Text = "ABCDEFGH"에 텍스트 상자가 있습니다. "BCD"를 선택하고 I-Beam (커서, 캐럿, 깜박이는 '|')을 'A'와 'B'사이에 두어야합니다. SelectionStart = 1 및 SelectionLenght = 3으로 설정하면 작동하지 않으며 알아낼 수 없습니다.

답변

0

SelectionLength을 0으로 설정하고 noted in the documentation으로 설정해야합니다.

당신은 프로그래밍 방식으로 이동하고 값이 제로의 에 SelectionLength 속성을 설정 캐럿을 할 텍스트 상자 내의 위치에 지정한 selectionStart을 설정하여 텍스트 상자 내에서 캐럿을 이동할 수 있습니다

(0).

문제가 BCD 실제로 선택이다, 그러나 당신이 커서 다시 B 전에 이동하려는 경우 당신이 할 수있을 것입니다 생각하지 않는 선택 텍스트부터 프레임 워크 속성을 통해 커서를 텍스트의 끝으로 이동시킵니다. here과 같이 좌표와 기본 상호 운용성을 사용해야합니다.

[DllImport("user32.dll")] 
[return: MarshalAs(UnmanagedType.Bool)] 
static extern bool GetCaretPos(out Point lpPoint); 

그러면 SetCaretPos으로 전화 할 수 있습니다.