C# 更改现有文本的文本颜色
我编写了一个应用程序,其中有一个黑色背景的richtextbox。因此,我必须用白色文字在上面写。通过将前景色设置为白色,所有这些都可以正常工作。但是,如果我将黑色单词中的文本复制到文本框中,则该文本将保持黑色 我需要更改文本的颜色。这就是我到目前为止所尝试的:(文本框名为txtMessage) 但这对现有的黑色文本没有任何影响 然后我试了一下:C# 更改现有文本的文本颜色,c#,richtextbox,textcolor,C#,Richtextbox,Textcolor,我编写了一个应用程序,其中有一个黑色背景的richtextbox。因此,我必须用白色文字在上面写。通过将前景色设置为白色,所有这些都可以正常工作。但是,如果我将黑色单词中的文本复制到文本框中,则该文本将保持黑色 我需要更改文本的颜色。这就是我到目前为止所尝试的:(文本框名为txtMessage) 但这对现有的黑色文本没有任何影响 然后我试了一下: private void txtMessage_TextChanged(object sender, EventArgs e) {
private void txtMessage_TextChanged(object sender, EventArgs e)
{
int s = txtMessage.SelectionStart;
txtMessage.SelectAll();
txtMessage.SelectionColor = Color.White;
txtMessage.Select(s, 0);
}
它在原则上工作得很好,但当然,每次我在文本框中编辑文本时(不是复制文本框中的内容,而是简单地键入),我键入的每个字母都会执行整个操作,导致闪烁(我猜是因为每次都选中然后取消选中)
那么,有没有人建议如何优雅地解决这个问题
非常感谢。如果在框中键入颜色设置为白色,则无需运行代码 您只需要在添加尚未键入的文本时运行它(例如,从示例中复制/粘贴) 因此,在TextChanged事件中使用该代码,但在运行该代码之前,请检查用户是否键入了文本或以其他方式添加了文本
编辑:检查此问题的答案:,它可能会帮助您您的目标是.NET的哪个版本?刚刚在VS2010上测试,目标是.NEt 4.0客户端配置文件,并在RichTextBox控件中复制/粘贴Word stay white中的黑色文本,即使指定了黑色背景和白色。我猜是最新的。我用的是VS2012,我的笔记本电脑很新。谢谢,我也有这个想法。虽然我不知道怎么做,谢谢。这似乎非常合理和简单。因此,当我使用richtextbox时,有一个属性undoactionname,它非常有用,因为如果粘贴了文本,它的值为“粘贴”。它是否也显示用户是否将拖放的数据拖到框中?
private void txtMessage_TextChanged(object sender, EventArgs e)
{
int s = txtMessage.SelectionStart;
txtMessage.SelectAll();
txtMessage.SelectionColor = Color.White;
txtMessage.Select(s, 0);
}