【问题标题】:Textbox SelectionStart, SelectionEnd and Caret (Cursor) Position文本框 SelectionStart、SelectionEnd 和插入符号(光标)位置
【发布时间】:2024-01-20 16:01:01
【问题描述】:

这可能非常简单。

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

【问题讨论】:

    标签: c# winforms textbox cursor-position


    【解决方案1】:

    您需要将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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        最近更新 更多