文本框SelectionStart,SelectionEnd和Caret(光标)位置

这可能非常简单。

我在WinForm上有一个文本框,Text =“ABCDEFGH”。 我需要选择“BCD”并将I-Beam(光标,插入符号,闪烁’|’)放在’A’和’B’之间。 设置SelectionStart = 1和SelectionLenght = 3不起作用,我无法弄明白。

您需要将SelectionLength设置为0,如文档中所述 。

您可以通过将SelectionStart设置为文本框中您希望插入符号移动到的位置以及将SelectionLength属性设置为零(0)的值,以编程方式在文本框中移动插入符。

如果问题是事实上选择了BCD ,但是你希望光标在B之前移回我不相信你能通过框架属性这样做,因为选择文本会将光标移动到文本的末尾。 您需要使用坐标和本地互操作,如此处所述。

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

然后,您可以调用SetCaretPos 。