文本框的SelectionStart、SelectionEnd和插入符(光标)位置

3

这可能非常简单。

我在一个WinForm窗体上有一个文本框,文本为"ABCDEFGH"。我需要选择"BCD"并将光标放在'A'和'B'之间。设置SelectionStart = 1和SelectionLenght = 3不起作用,我想不出解决办法。

2个回答

1

您需要根据文档的说明将SelectionLength设置为0。

您可以通过将SelectionStart设置为文本框内所需光标移动到的位置,并将SelectionLength属性设置为零(0)来在程序中移动文本框内的光标。

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

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

你可以调用 SetCaretPos

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接