C# 当添加到表单构造函数时,RichTextBox文本着色具有不同的行为
我有一个RichTextBox放在表单上,我想添加不同颜色的文本。 我使用它将彩色文本添加到RichTextBox,但是当我将其添加到表单构造函数时,它有一个不同的行为(第一个单词不是彩色的)。 有人能解释这种不同的行为吗 代码如下:C# 当添加到表单构造函数时,RichTextBox文本着色具有不同的行为,c#,winforms,richtextbox,C#,Winforms,Richtextbox,我有一个RichTextBox放在表单上,我想添加不同颜色的文本。 我使用它将彩色文本添加到RichTextBox,但是当我将其添加到表单构造函数时,它有一个不同的行为(第一个单词不是彩色的)。 有人能解释这种不同的行为吗 代码如下: richTextBox1.Font = new Font("Consolas", 18f, FontStyle.Bold); richTextBox1.BackColor = Color.AliceBlue; str
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(" ");
}
}
richTextBox1.Font=新字体(“Consolas”,18f,FontStyle.Bold);
richTextBox1.BackColor=Color.AliceBlue;
字符串[]字=
{
“点”,
“净”,
“帕尔斯”,
“是”,
“a”,
“很好”,
“网站。”
};
颜色[]颜色=
{
颜色,浅绿色,
Color.CadetBlue,
颜色,玉米丝,
颜色,金色,
颜色,粉红色,
颜色,薰衣草,
颜色:软呢帽
};
for(int i=0;i
注意:我使用VS2010、.NET 3.5将代码移动到加载事件中,它将工作:
private void Form1_Load(object sender, EventArgs e)
{
colorTbx();
}
private void colorTbx()
{
//your code here
}
原因似乎是控件的
句柄
尚未创建。它仅在您第一次调用AppendText
时创建。虽然这不应该是个问题(如果我找到问题的原因,我会回来的)
要修复它,只需强制创建句柄。您可以通过请求句柄
属性来实现这一点
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(" ");
}
var handle=richTextBox1.handle//强制创建句柄
for(int i=0;i
我找不到问题所在,它们在我的解决方案中都有自己的颜色…(你是说“点”的背景没有突出显示?)顺便说一句,richTextBox1.SelectionBackColor=color前面的花括号;在richTextBox1.AppendText(“”)之后;是unnecessary@Lost谢谢你的关注,是的,我指的是“点”的背景。你的意思是在表单构造函数中的代码之前添加这一行吗?不,请参见var handle=richTextBox1.handle代码>在循环之前。加上那一行。它应该可以工作。@SriramSakthivel谢谢你,它工作了,但我仍然不知道我为什么会有这种行为,它不应该在我初始化组件后创建句柄吗?它在第一次调用AppendText
时创建句柄,我也在想为什么会发生这种情况:(我想这是一个bug.)。。