2

我编写了一个应用程序,其中有一个黑色背景的富文本框。因此我必须用白色文字写在里面。通过将前景色设置为白色,一切正常。但是,如果我将 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);

    }

它原则上工作正常,但当然每次我在文本框中编辑文本(不是在其中复制内容,而是简单地输入)时,整个事情都会随着我输入的每个字母执行而导致闪烁(我猜是因为所有内容都被选中并且然后每次都取消选择)。

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

非常感谢。

4

1 回答 1

2

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

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

因此,在 TextChanged 事件中使用该代码,但在运行它之前先检查用户是否键入了文本或以其他方式添加了它

编辑:检查这个问题的答案:Detecting a paste into a RichTextBox,它可能会帮助你

于 2013-06-14T12:30:20.600 回答