【问题标题】:Windows Forms RichTextBox cursor positionWindows 窗体 RichTextBox 光标位置
【发布时间】:2021-12-25 02:37:52
【问题描述】:

我有一个带有 RichTextBox 控件的 C# Windows 窗体程序。每当框内的文本发生更改时(除了键入该更改),光标就会回到开头。

也就是说,当使用Text属性改变RichTextBox中的文本时,会使光标向后跳。

如何使光标保持在同一位置或与编辑的文本一起移动?

谢谢

【问题讨论】:

    标签: c# winforms richtextbox text-cursor


    【解决方案1】:

    您可以在进行更改之前存储光标位置,然后再将其恢复:

    int i = richTextBox1.SelectionStart;
    richTextBox1.Text += "foo";
    richTextBox1.SelectionStart = i;
    

    如果您不想删除突出显示,您可能还想对 SelectionLength 执行相同的操作。请注意,如果插入的文本在选择范围内,这可能会导致奇怪的行为。然后您需要扩展选择以包括插入文本的长度。

    【讨论】:

    • 光标位置和 SelectionStart 并不总是相同的。在选择文本的情况下,插入符号可以位于所选文本的开头或结尾,具体取决于所选文本的方向。可悲的是,Winforms RichTextBox 似乎没有为此提供单独的属性。
    【解决方案2】:

    请注意,如果有人刷新或完全更改 RichTextBox 内容,则必须事先调用焦点方法才能移动插入符号:

    richTextBox1.Focus();
    int i = richTextBox1.SelectionStart;
    richTextBox1.Text = strPreviousBuffer;
    richTextBox1.SelectionStart = i;
    

    【讨论】:

      【解决方案3】:

      这是一个较小的,具有相同的效果。 this.richTextBox1.Select(this.richTextBox1.Text.Length, 0); 在文本末尾标记 0 个字符并将光标设置为结束

      【讨论】:

        猜你喜欢
        • 2012-05-05
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多