更改现有文本的文本颜色

时间:2013-06-14 12:21:44

标签: c# richtextbox textcolor

我编写了一个应用程序,其中包含带有黑色背景的richtextbox。因此,我必须使用白色文字写入。通过将前色设置为白色,一切正常。但是,如果我将黑色Word中的文本复制到我的文本框中,则该文本仍为黑色。

我需要更改该文字的颜色。所以这就是我到目前为止所尝试的:(文本框名为txtMessage)

txtMessage.ForeColor = Color.White;

但这对现有的黑色文字没有任何影响。

然后我尝试了这个:

private void txtMessage_TextChanged(object sender, EventArgs e)
    {
        int s = txtMessage.SelectionStart;
        txtMessage.SelectAll();
        txtMessage.SelectionColor = Color.White;
        txtMessage.Select(s, 0);

    }

它原则上工作正常但当然每次我在文本框中编辑文本(不是在那里复制某些东西,而只是键入)时,整个事情都会被我输入的每个字母执行,导致闪烁(我猜是因为所有被选中,然后每次都取消选择。)

那么有人建议如何优雅地解决这个问题吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

如果您在框中输入颜色设置为白色,则无需运行代码。

您只需在添加尚未键入的文本时运行它(例如,从您的示例中复制/粘贴)。

因此,在TextChanged事件中使用该代码,但在运行之前执行检查,以确定用户是键入文本还是以其他方式添加文本

编辑:检查此问题的答案:Detecting a paste into a RichTextBox,它可能会对您有所帮助