Я новичок в программировании, я делаю приложение С# для Windows Form, при выборе узла Tree он добавляет текст в Richtextbox:
Qs1: Для меня Caret не отображается после выбора узла дерева. 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();
}
Кроме того, вы должны использовать \n
а не Environment.Newline
потому что последний в любом случае упростится до первого.
Вопрос вроде "[Как сделать] Сделать отображение как редактор, где, если слово начинается с//(Комментарий) должно быть зеленого цвета" очень общее. Попытайтесь разбить его на отдельные проблемы и задавать вопросы тем, кого вы не можете понять сами. Чтобы начать работу, посмотрите здесь этот вопрос: выделите "#" до конца строки в richtextbox. Однако вы можете установить SelectionBackColor
не SelectionColor
, в зависимости от ваших точных требований пользовательского интерфейса.