繁体   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