在另一个文本框中的选定文本之前添加文本

Add text before selected text in another textbox

我在尝试让一个文本框更改另一个文本框时遇到问题。

说明: 有两个 richTextBox(rich1,rich2)。 rich1 和 rich2 将有一个由用户选择的字符串(他们的服务器名称)。表单上有一些按钮可以使用以下方法将 rich1 中的选定文本更改为不同的颜色:

private void btnDarkBlue_Click(object sender, EventArgs e)
    {
        rich1.SelectionColor = Color.DarkBlue;
    }

我想要发生的是当有人点击颜色按钮时,rich1 中的选定文本与 rich2 中的相同,但我想在 rich2 中的选定文本之前添加文本,例如,如果有人选择 [= "Funhaus" 中的 22=] 那么 rich2 将等于 "Fu\colour=12\nhaus"

所以最后,rich1 会显示(着色):"Funhaus"。但是 rich2 会显示(没有着色):"Fun\colour=12haus",因为用户已决定将单词 "haus" 更改为 DarkBlue。这是我试过的一些代码:

rich2.SelectedRtf = rich1.SelectedRtf;

我假设因为它们都等于相同的文本,所以这会起作用,但是这似乎只是将 rich1 的选定文本添加到带有格式的 rich2 的开头。

 private void rich1_SelectionChanged(object sender, EventArgs e)
    {
        rich2.SelectionLength = rich1.SelectionLength;
        rich2.SelectionStart = rich1.SelectionStart;

    }

private void button2_Click(object sender, EventArgs e)
    {
        rich2.SelectedRtf = @"{\rtf1\ansi{colour=12}" + rich2.SelectedRtf;
        rich1.ForeColor = Color.Blue;
    }

如果要将格式化文本插入 RichTextBox 控件而不更改其其他格式,请使用 SelectedText 属性,然后仅应用格式:

private void btnDarkBlue_Click(object sender, EventArgs e)
{
    rich1.SelectionColor = Color.DarkBlue;
    rich2.SelectionStart = rich1.SelectionStart;
    rich2.SelectionLength = 0;
    rich2.SelectedText = whateverTextYouLike;
    rich2.SelectionColor = Color.DarkBlue; //<-- apply any format if you like only after setting selected text
}

如果按下按钮时 rich1rich2 具有完全相同的字符串,这应该有效。