我了解到,要改变ListView的标题颜色,我们需要使用以下代码:
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.Graphics.FillRectangle(Brushes.Pink, e.Bounds);
e.DrawText();
}
我们使用同样的事件来改变ListView的标题样式:
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
using (StringFormat sf = new StringFormat())
{
sf.Alignment = StringAlignment.Center;
e.DrawBackground();
using (Font headerFont =
new Font("Microsoft Sans Serif", 9, FontStyle.Bold)) //Font size!!!!
{
e.Graphics.DrawString(e.Header.Text, headerFont,
Brushes.Black, e.Bounds, sf);
}
}
}
现在我的问题是我想要同时改变标题的颜色和样式。所以我这样写:
现在我的问题是我想要同时改变标题的颜色和样式。所以我这样写:
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.Graphics.FillRectangle(Brushes.Pink, e.Bounds);
e.DrawText();
using (StringFormat sf = new StringFormat())
{
sf.Alignment = StringAlignment.Center;
e.DrawBackground();
using (Font headerFont =
new Font("Microsoft Sans Serif", 9, FontStyle.Bold)) //Font size!!!!
{
e.Graphics.DrawString(e.Header.Text, headerFont,
Brushes.Black, e.Bounds, sf);
}
}
}
但是,如果我执行这段代码,标题会变成粗体,但标题颜色不会改变。要同时更改它们(即标题颜色和标题样式),我缺少什么?我不明白。
e.DrawBackground();
看起来不对 - 如果你正在使用自己的颜色填充矩形,为什么还要让 LV 去做呢? - Ňɏssa Pøngjǣrdenlarpe.DrawText()
。对于渲染控件文本,TextRenderer.DrawText
更为合适(而非DrawString
)。 - Ňɏssa Pøngjǣrdenlarp