【问题标题】:Rich textbox is not changing back color for text when timer starts计时器启动时,富文本框不会更改文本的颜色
【发布时间】:2013-07-19 16:07:09
【问题描述】:

我遇到了问题。我正在为富文本框中的文本添加颜色。当计时器打开时,所有文本都变成了水色。但我需要不同的颜色。这是我的代码

    private void Form1_Load_1(object sender, EventArgs e)
    {
        //richTextBox1.Font = new Font("Consolas", 18f, FontStyle.Bold);
        richTextBox1.BackColor = Color.AliceBlue;
        string[] words = { "Sachin tendulkas(40)", "Virendra sehwag(35)", "Dhoni", "Ramesh", "Saurov ganguly(39)", "Venkatesh prasad(44)" };
        Color[] colors =
               {
    Color.Aqua,
    Color.CadetBlue,
    Color.Cornsilk,
    Color.Gold,
    Color.HotPink,
    Color.Lavender,
    Color.Moccasin
    };

        for (int i = 0; i < words.Length; i++)
        {
            string word = words[i];
            Color color = colors[i];
            {
                richTextBox1.SelectionBackColor = color;
                richTextBox1.AppendText(word);
                //richTextBox1.SelectionBackColor = Color.AliceBlue;
                richTextBox1.AppendText(" ");
            }
        }
        timer1.Start();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        string str1 = richTextBox1.Text;
        str1 = str1.Substring(1) + str1.Substring(0, 1);
        richTextBox1.Text = str1;
    }

【问题讨论】:

    标签: c# winforms timer richtextbox


    【解决方案1】:

    这一行:

    richTextBox1.Text = str1;
    

    替换所有现有格式。

    您必须选择字符范围,然后将其替换为有效的 RTF 字符串。

    我怀疑你希望你的滴答事件看起来像这样(没有错误检查):

    private void timer1_Tick(object sender, EventArgs e) {
      richTextBox1.Select(0, 1);
      string rtf = richTextBox1.SelectedRtf;
      richTextBox1.SelectedText = string.Empty;
      richTextBox1.Select(richTextBox1.Text.Length, 0);
      richTextBox1.SelectedRtf = rtf;
    }
    

    【讨论】:

    • 嗯,谢谢您的回复。但是abvoe代码不起作用。我的文字闪烁。请再次检查
    • @user2569839 请定义“无效”。在我的测试中,我的代码与您的示例完全一样,只是它保留了颜色格式。是的,闪烁是操作 RTB 控件的副产品。请参阅此flicker free RichTextBox control 以解决该问题。
    • 请让上面的整个代码和我的代码一起工作。让它无闪烁并发布。
    • @user2569839 我不是你的仆人。我已尽力帮助您。
    • K 兄弟。抱歉这样问。请原谅我。但请帮忙。
    猜你喜欢
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    相关资源
    最近更新 更多