更改列表视图中列标题的字体样式和颜色

本文关键字:字体 样式 颜色 标题 列表 视图 | 更新日期: 2023-09-27 18:36:03

我搜索了它来更改我们使用的列表视图的标题颜色:

private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
    e.Graphics.FillRectangle(Brushes.Pink, e.Bounds);
    e.DrawText();
}

我们使用相同的事件来更改列表视图的标题样式:

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.DrawText()的调用并e.DrawBackground()

private void list_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);
        }
    }
}