簡體   English   中英

RichTextBox C# 設置插入符號位置 winforms

[英]RichTextBox C# Set caret location winforms

我正在構建一個聊天應用程序,用戶可以在其中將文本輸入到富文本框。

在富文本框中有一個初始文本,上面寫着:“我:”。

現在,當用戶按下主頁按鈕時,我希望插入符號位於“我:”字符串之后。 因此,對於 Shift+Home 組合或三次鼠標單擊或 Ctrl + 左光標等。

有什么辦法可以做到嗎?

我已經試過了

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

提前致謝,奧茲。

您可以使用富文本框的SelectionStartSelectionLength屬性設置插入符號位置。 SelectionLength設置為 0,然后將SelectionStart設置為您希望插入符號出現的位置。

SelectionStart的文檔說:

如果控件中未選擇任何文本,則此屬性指示新文本的插入點或插入符號。


Win32 API 函數SetCaretPos級別太低,無法滿足您的需求。

Winforms: RichTextBox.SelectionStart並將 RichTextBox.SelectionLength 設置為 0。

WPF: RichTextBox.CaretPosition

使用選擇方法:

public void Select(
    int start,
    int length
)

richTextBoxUserText.Select(richTextBoxUserText.TextLength, 0);
RichTextBox1.SelectionStart = Pos; RichTextBox1.SelectionLength = 0; RichTextBox1.ScrollToCaret();

發現它在屬性 SelectionProtected 上的谷歌搜索

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM