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

本文关键字:文本 添加 另一个 | 更新日期: 2023-09-27 18:05:44

我在试图让一个文本框改变另一个文本框时遇到了问题。

解释:有两个richtextbox (rich1, rich2)。Rich1和rich2将有一个由用户选择的字符串(它们的服务器名)。表单上有一些按钮可以将rich1中的选定文本更改为不同的颜色,使用如下:

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

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

所以最后,rich1将显示(带颜色):"Funhaus"。但是rich2会显示(没有颜色):"Fun' color =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有完全相同的字符串,当你按下按钮。