如何将字符串附加到富文本框C#中的光标位置?

时间:2016-05-12 06:54:37

标签: c# append richtextbox

我想在光标闪烁的位置的富文本框中添加字符串。我还想改变我输入的文字颜色。例如,如果有预先输入的文本颜色为黑色,那么我输入一个新的字符串,然后该字符串应该是蓝色。它应该一直是我输入字符串。我输入的琴弦应该保持蓝色。感谢

2 个答案:

答案 0 :(得分:0)

因此,您需要订阅文本正在从文本框更改的事件,这将为您提供已输入到游标的文本。

然后,只需将文本附加到语句中就可以了,只需要应用不同的格式,如下所述:

http://www.wpf-tutorial.com/basic-controls/the-textblock-control-inline-formatting/

答案 1 :(得分:0)

当前光标位置也称为SelectionStart。只需设置SelectionStart=0,然后设置您想要的所有SelectionXXX属性:

richtTextBox1.SelectionLength=0;
richtTextBox1.SelectionColor = Color.Blue;

现在你输入的所有内容都是蓝色的。

不再需要也不少。无需订阅TextChanged事件。

请注意,如果您将光标位置移动到另一个位置,该位置将具有自己的颜色,并且当您在其中输入新文本时,它将具有该颜色。

如果您想将新颜色(蓝色)应用于其他位置,您需要对SelectionChanged事件进行编码,可能是这样的:

private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
     // you should check if there is no text selected
     // or else any selection will be colored immediately: 
     if ( richTextBox1.1.SelectionLength  == 0)
       richTextBox1.1.SelectionColor = yourNewColor; 
}

和往常一样,如果要为已经存在新颜色的部分着色,则需要选择该部分并再次设置颜色。最好使用调色板!使用一些彩色Labels,你可以写:

private void colorLabel_Click(object sender, EventArgs e)
{
     Color yourNewColor= ((sender) as Label).BackColor;
     richTextBox1.1.SelectionColor = yourNewColor; 
}

如果您愿意,可以在Panel's BackgroundImage中使用更丰富的调色板图像并对其MouseClick事件进行编码:

private void panel1_MouseClick(object sender, MouseEventArgs e)
{
    Color c = ((Bitmap)panel1.BackgroundImage).GetPixel(e.X, e.Y);
    if (e.Button.HasFlag(MouseButtons.Left))
    { 
        richTextBox1.SelectionColor = c;
    }
    else  // pick new BackColor:
    { 
        richTextBox1.SelectionBackColor = c;
    }
}