簡體   English   中英

添加到Form構造函數時,RichTextBox文本着色具有不同的行為

[英]RichTextBox text coloring has different behavior when added to the Form constructor

我有一個RichTextBox放在窗體上,我想添加不同的文本與不同的顏色。 我使用此代碼將顏色文本添加到RichTextBox,但是當我將它添加到Form構造函數時,它有不同的行為(第一個單詞沒有着色)。 誰可以解釋這種不同的行為?

這是代碼:

        richTextBox1.Font = new Font("Consolas", 18f, FontStyle.Bold);
        richTextBox1.BackColor = Color.AliceBlue;
        string[] words =
        {
        "Dot",
        "Net",
        "Perls",
        "is",
        "a",
        "nice",
        "website."
        };
        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(" ");
        }
        }

注意:我使用VS2010,.NET 3.5

似乎原因是Control的Handle尚未創建。 它僅在您第一次調用AppendText時創建。 雖然它不應該是一個問題(如果我發現為什么這是一個問題,我會回來)。

要解決它,只需強制創建句柄。 您可以通過請求Handle屬性來執行此操作。

var handle = richTextBox1.Handle;//Force create handle
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(" ");

}

將代碼移動到Load事件中它將起作用:

    private void Form1_Load(object sender, EventArgs e)
    {
        colorTbx();
    }

    private void colorTbx()
    {
        //your code here
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM