【发布时间】:2015-01-04 13:48:16
【问题描述】:
我搜索了更改我们使用的 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 也这样做? -
@Plutonix 是的,但是当我删除它时,标题显示两次。我现在要做什么?
-
同时摆脱
e.DrawText()。TextRenderer.DrawText更适合呈现控制文本(与DrawString相比) -
@Gopi:请参阅下面的答案。当您删除它时,您会看到重复的绘图,因为您通过 ListView 和自己绘制文本。