在form1构造函数中
listView1.Scrollable = true;
listView1.View = View.Details;
ColumnHeader header = new ColumnHeader();
header.Text = "Files are ready";
header.Name = "col1";
listView1.Columns.Add(header);
listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
我想将“文件已就绪”的颜色更改为红色。因此我尝试使用此事件:
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
using (var sf = new StringFormat())
{
sf.Alignment = StringAlignment.Center;
using (var headerFont = new Font("Microsoft Sans Serif", 9, FontStyle.Bold))
{
e.Graphics.FillRectangle(Brushes.Pink, e.Bounds);
e.Graphics.DrawString(e.Header.Text, headerFont,
Brushes.Black, e.Bounds, sf);
}
}
}
已尝试将两个画笔都更改为红色,但没有任何更改。
1条答案
按热度按时间o7jaxewo1#
您可能没有将
listView1
的OwnerDraw
属性设置为true
。此属性指示您希望通过自己的代码而不是原始的
ListView
方法绘制ListView
的一部分。如果没有此属性,ListView
将不会引发DrawColumnHeader
、DrawItem
和DrawSubItem
等事件。对于您不想自己绘制的列,请将
e.DrawDefault
设置为true
。如果您只想更改文本颜色,请使用e.DrawBackground()
绘制标题的背景:但是如果你把
listView1.OwnerDraw
设置为true
,ListView
会询问你所有的信息:头、项和子项。因此,您还需要订阅DrawItem
和DrawSubItem
事件,并明确告诉ListView
您希望它自己绘制这些内容: