我编写了一个应用程序,其中包含带有黑色背景的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);
}
它原则上工作正常但当然每次我在文本框中编辑文本(不是在那里复制某些东西,而只是键入)时,整个事情都会被我输入的每个字母执行,导致闪烁(我猜是因为所有被选中,然后每次都取消选择。)
那么有人建议如何优雅地解决这个问题吗?
非常感谢。
答案 0 :(得分:2)
如果您在框中输入颜色设置为白色,则无需运行代码。
您只需在添加尚未键入的文本时运行它(例如,从您的示例中复制/粘贴)。
因此,在TextChanged事件中使用该代码,但在运行之前执行检查,以确定用户是键入文本还是以其他方式添加文本
编辑:检查此问题的答案:Detecting a paste into a RichTextBox,它可能会对您有所帮助