You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinForms ListView Group如何自定义颜色与字体大小

WinForms ListView 分组头自定义字体大小/颜色解决方案

WinForms 内置的 ListView 控件默认调用系统原生接口绘制分组头,不会继承 ListView 本身设置的 Font、ForeColor 等属性,需要通过开启自定义绘制的方式手动调整分组头样式。

实现步骤

  • 第一步:开启 ListView 自定义绘制配置
    在窗体构造函数或者设计器中给目标 ListView 设置以下属性:

    MyListView.OwnerDraw = true; // 开启自定义绘制
    MyListView.ShowGroups = true; // 确保分组显示开启
    

    同时绑定对应的绘制事件,不需要自定义的内容直接用默认渲染逻辑即可:

    // 列头、普通行、子项沿用默认绘制
    MyListView.DrawColumnHeader += (s, e) => e.DrawDefault = true;
    MyListView.DrawItem += (s, e) => e.DrawDefault = true;
    MyListView.DrawSubItem += (s, e) => e.DrawDefault = true;
    // 仅自定义分组头绘制
    MyListView.DrawGroup += MyListView_DrawGroup;
    
  • 第二步:编写分组头绘制逻辑
    在DrawGroup事件中可以完全自定义分组头的字体、颜色、间距等样式,示例代码如下:

    private void MyListView_DrawGroup(object sender, DrawListViewGroupEventArgs e)
    {
        // 绘制默认背景
        e.DrawBackground();
    
        // 自定义标题样式:这里示例是在ListView原有字体基础上放大2号、加粗,颜色设为深蓝色
        using var titleFont = new Font(MyListView.Font.FontFamily, MyListView.Font.Size + 2, FontStyle.Bold);
        e.Graphics.DrawString(e.Group.Header, titleFont, Brushes.DarkBlue, e.Bounds.Left + 4, e.Bounds.Top + 2);
    
        // 若使用了Subtitle属性(仅.NET 5+及Win10以上系统支持),单独绘制副标题
        if (!string.IsNullOrEmpty(e.Group.Subtitle))
        {
            using var subtitleFont = new Font(MyListView.Font.FontFamily, MyListView.Font.Size - 1, FontStyle.Regular);
            e.Graphics.DrawString(e.Group.Subtitle, subtitleFont, Brushes.Gray, e.Bounds.Left + 4, e.Bounds.Top + titleFont.Height + 2);
        }
    
        // 绘制默认的展开/折叠标识
        e.DrawFooter();
    }
    

常见调整说明

  • 如果需要固定分组头高度,.NET 5+ 可以直接设置 ListViewGroup.HeaderHeight 属性,旧版本.NET Framework 可以通过向ListView发送LVM_SETGROUPINFO消息实现高度调整。
  • 颜色可以根据需求替换为自定义的SolidBrush实例,注意手动释放资源或者用系统自带的Brush对象避免内存泄漏。

你提到的效果参考:
效果示意图

你使用的基础分组创建代码无需修改即可适配上述逻辑:

MyListView.BeginUpdate();
MyListView.Items.Clear();
var lg = new ListViewGroup("Group Test");
lg.Subtitle = "Does this work?";
MyListView.Groups.Add(lg);

内容的提问来源于stack exchange,提问作者Damn Vegetables

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:15:04