我在表单上放置了一个RichTextBox,我想添加不同颜色的不同文本。 我使用这个code向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
答案 0 :(得分:2)
似乎原因是尚未创建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(" ");
}
答案 1 :(得分:1)
将代码移动到Load事件中,它将起作用:
private void Form1_Load(object sender, EventArgs e)
{
colorTbx();
}
private void colorTbx()
{
//your code here
}