在Richtextbox中追加文本时,C#光标/插入符号不显示

在Richtextbox中追加文本时,C#光标/插入符号不显示,c#,treeview,richtextbox,C#,Treeview,Richtextbox,我是编程新手,我正在制作C#Windows窗体应用程序,在选择树节点时,它会在Richtextbox中添加文本: Qs1:For me插入符号在选择树节点后不显示。 Qs2:像编辑器一样显示,如果单词以//(注释)开头,则应为绿色 谢谢 if (treeView1.SelectedNode.Name == "Node1") { this.richTextBox1.SelectedText += " my text for Node1" + Enviro

我是编程新手,我正在制作C#Windows窗体应用程序,在选择树节点时,它会在Richtextbox中添加文本:

Qs1:For me插入符号在选择树节点后不显示。 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的首选形式是。你可能会得到更多的回答和更集中的问题

也就是说:

  • 根据该方法的文件:

    文本框必须具有焦点才能移动插入符号

    所以你需要先这么做

    此外,作为一般规则,您不应使用
    +=
    修改预先存在的或,因为这将清除该文本上的任何和所有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
    ,因为无论如何

  • 像“[如何]像编辑器一样显示,如果word以//(注释)开头,则应为绿色”这样的问题非常普遍。试着把它分解成离散的问题,并为那些你自己无法理解的问题提问。要开始,请参见此处的问题:。但是,您可能希望设置而不是,具体取决于您的UI要求