Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改现有文本的文本颜色_C#_Richtextbox_Textcolor - Fatal编程技术网

C# 更改现有文本的文本颜色

C# 更改现有文本的文本颜色,c#,richtextbox,textcolor,C#,Richtextbox,Textcolor,我编写了一个应用程序,其中有一个黑色背景的richtextbox。因此,我必须用白色文字在上面写。通过将前景色设置为白色,所有这些都可以正常工作。但是,如果我将黑色单词中的文本复制到文本框中,则该文本将保持黑色 我需要更改文本的颜色。这就是我到目前为止所尝试的:(文本框名为txtMessage) 但这对现有的黑色文本没有任何影响 然后我试了一下: private void txtMessage_TextChanged(object sender, EventArgs e) {

我编写了一个应用程序,其中有一个黑色背景的richtextbox。因此,我必须用白色文字在上面写。通过将前景色设置为白色,所有这些都可以正常工作。但是,如果我将黑色单词中的文本复制到文本框中,则该文本将保持黑色

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

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

然后我试了一下:

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);

    }