簡體   English   中英

在Richtextbox中追加文本時不顯示C#光標/插入符

[英]C# Cursor/ Caret Not display when Append text in Richtextbox

我是編程新手,正在制作C#Windows窗體應用程序,在選擇“樹”節點時,它將文本附加到Richtextbox中:

Qs1:對我來說,選擇樹節點后不顯示插入符號。 Qs2:使顯示像編輯器一樣,如果以//(注釋)開頭的單詞應為綠色。

謝謝

 if (treeView1.SelectedNode.Name == "Node1")
        {  
          this.richTextBox1.SelectedText += "  my text for Node1" + Environment.NewLine
          richTextBox1.Focus();
        }
        else if (treeView1.SelectedNode.Name == "Node2")
        {
         this.richTextBox1.SelectedText += "  my text for Node2" + Environment.NewLine
          richTextBox1.Focus();
        }

您在問兩個與RichTextBox有關的問題。 StackOverflow的首選形式是每個問題一個問題 對於更集中的問題,您可能會得到更多答復。

話雖如此:

  1. 根據有關Select方法的文檔:

    文本框必須具有焦點才能移動插入符號。

    因此,您首先需要這樣做。

    此外,作為一般規則,您永遠不要使用+=修改先前存在的TextSelectedText ,因為這將清除該文本上的所有RTF格式。 相反,要插入文本,應將所選內容設置為所需的長度為零的位置,然后在該位置插入。 從而:

     public static void FocusAndAppendToSelectedText(this RichTextBox richTextBox, string text) { Action append = () => { richTextBox.Focus(); var start = richTextBox.SelectionStart; var length = richTextBox.SelectionLength; var insertAt = start + length; richTextBox.Select(insertAt, 0); richTextBox.SelectedText = text; }; if (richTextBox.InvokeRequired) richTextBox.BeginInvoke(append); else append(); } 

    另外,您應該使用\\n而不是Environment.Newline因為后者無論如何都會簡化為前者

  2. 諸如“ [如何使顯示像編輯器一樣,如果以//(注釋)開頭的單詞應為綠色的地方”這樣的問題非常籠統。 嘗試將其分解為離散的問題,並針對無法解決的問題提出問題。 要開始使用,請在此處看到以下問題: 突出顯示“#”,直到richtextbox中的行結束 但是,您可能需要根據您的精確UI要求設置SelectionBackColor而不是SelectionColor

暫無
暫無

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

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