这可能非常简单。
我在 WinForm 上有一个文本框,Text = "ABCDEFGH"。我需要选择“BCD”并将 I-Beam(光标、插入符号、闪烁的“|”)留在“A”和“B”之间。设置 SelectionStart = 1 和 SelectionLenght = 3 不起作用,我无法弄清楚。
这可能非常简单。
我在 WinForm 上有一个文本框,Text = "ABCDEFGH"。我需要选择“BCD”并将 I-Beam(光标、插入符号、闪烁的“|”)留在“A”和“B”之间。设置 SelectionStart = 1 和 SelectionLenght = 3 不起作用,我无法弄清楚。
您需要按照文档中的说明SelectionLength
将 设置为 0 。
您可以通过将 SelectionStart 设置为文本框中您希望插入符号移动到的位置并将 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);