开发者

RichTextBox C# Set caret location winforms

I am building a chat application where the user enters its text to a richtextbox.

In the rich text box there is an initial text which says: "Me: ".

Now, when the user press the Home button I want the caret to be located after the "Me: " string. So for Shift+Home combination or for tripl开发者_StackOverflowe mouse click or for Ctrl + left cursor etc..

Any way it can be done?

I've already tried

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetCaretPos(int X, int Y);

thanks in advance, Oz.


You can set the caret position with the SelectionStart and SelectionLength properties of the rich text box. Set SelectionLength to 0 and then set SelectionStart to the location where you want the caret to appear.

The documentation for SelectionStart says:

If no text is selected in the control, this property indicates the insertion point, or caret, for new text.


The Win32 API function SetCaretPos is much too low level for your needs.


Winforms: RichTextBox.SelectionStart & set RichTextBox.SelectionLength to 0.

WPF: RichTextBox.CaretPosition


Use the Select method:

public void Select(
    int start,
    int length
)

richTextBoxUserText.Select(richTextBoxUserText.TextLength, 0);


RichTextBox1.SelectionStart = Pos;
RichTextBox1.SelectionLength = 0;
RichTextBox1.ScrollToCaret();


Found it googling on the property SelectionProtected

richTextBoxUserText.Text = INITIAL_TEXT;
richTextBoxUserText.SelectAll();
richTextBoxUserText.SelectionColor = Color.Red;
richTextBoxUserText.SelectionProtected = true;
richTextBoxUserText.SelectionLength = 0;
richTextBoxUserText.SelectionStart = richTextBoxUserText.TextLength + 1;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜