文本框SelectionStart、SelectionEnd和Caret(光标)Position

本文关键字:光标 Position Caret SelectionStart SelectionEnd 文本 | 更新日期: 2023-09-27 18:22:14

这可能非常简单。

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

文本框SelectionStart、SelectionEnd和Caret(光标)Position

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

通过设置选择开始到文本框中所需的位置要移动到的插入符号,并将SelectionLength属性设置为值为零(0)。

如果问题是实际上选择了BCD,但您希望将光标移回B之前,我认为您无法通过框架属性做到这一点,因为选择文本会将光标移到文本的末尾。您需要使用坐标和本机互操作,如这里所述。

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

然后你可以打电话给SetCaretPos。

如果将TextBox.Multiline属性设置为True,则可以使用负选择长度来执行此操作。您需要使用Select()重载,因为SelectionLength不允许负值。

textBox.Select(1 + 3, -3);