文本框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不起作用,我也弄不明白。
您需要将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);