这可能很简单。
我在WinForm上有一个文本框,Text =“ABCDEFGH”。我需要选择“BCD”并将I-Beam(光标,插入符号,闪烁'|')放在'A'和'B'之间。设置SelectionStart = 1和SelectionLenght = 3不起作用,我无法理解。
答案 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);