[英]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的首选形式是每个问题一个问题 。 对于更集中的问题,您可能会得到更多答复。
话虽如此:
根据有关Select
方法的文档:
文本框必须具有焦点才能移动插入符号。
因此,您首先需要这样做。
此外,作为一般规则,您永远不要使用+=
修改先前存在的Text
或SelectedText
,因为这将清除该文本上的所有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(); }
诸如“ [如何使显示像编辑器一样,如果以//(注释)开头的单词应为绿色的地方”这样的问题非常笼统。 尝试将其分解为离散的问题,并针对无法解决的问题提出问题。 要开始使用,请在此处看到以下问题: 突出显示“#”,直到richtextbox中的行结束 。 但是,您可能需要根据您的精确UI要求设置SelectionBackColor
而不是SelectionColor
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.