Textbox SelectionStart,SelectionEnd和Caret(光标)位置

时间:2012-02-01 22:27:24

标签: c# winforms textbox cursor-position

这可能很简单。

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

2 个答案:

答案 0 :(得分:0)

您需要将SelectionLength设置为0 noted in the documentation

  

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

如果问题是 BCD 实际上已被选中,但你希望光标在 B 之前移回我不相信你能做到这一点通过框架属性,因为选择文本会将光标移动到文本的末尾。您需要使用坐标和本地互操作,如标注here

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

然后你可以拨打SetCaretPos

答案 1 :(得分:0)

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

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