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

如何让ListView的列表项从第二列单元格开始添加,避免占用列标题?

解决ListView列表项从第二列开始显示的问题

关键问题分析

你的代码仅添加了1个列标题,且直接给item.SubItems[0]赋值,导致内容占据了唯一的第一列。要实现内容从第二列开始,需要两步:

  • 先添加足够数量的列标题(包含要预留的第一列)
  • 让第一列内容为空,后续子项从第二列开始填充

修改后的完整代码

private void DisplayTableWithListview()
{
    listView1.GridLines = true;// 是否显示网格线
    listView1.FullRowSelect = true;// 是否选中整行
    listView1.View = View.Details;// 设置显示模式为详情视图
    listView1.Scrollable = true;// 是否自动显示滚动条
    listView1.MultiSelect = false;// 是否允许多行选择

    // 添加列标题:第一列预留,后面添加业务列
    listView1.Columns.Add("", 80, HorizontalAlignment.Center); // 第一列留空,设置合适宽度
    listView1.Columns.Add("产品名称", 160, HorizontalAlignment.Center);
    listView1.Columns.Add("数值1", 80, HorizontalAlignment.Center);
    listView1.Columns.Add("数值2", 80, HorizontalAlignment.Center);
    listView1.Columns.Add("数值3", 80, HorizontalAlignment.Center);
    
    // 添加表格数据
    for (int i = 0; i < 6; i++)
    {
        // 初始化ListViewItem时,第一列设为空字符串
        ListViewItem item = new ListViewItem("");
        // 后续子项依次添加,对应第二、三、四、五列
        item.SubItems.Add("Product" + i.ToString());
        item.SubItems.Add(i.ToString());
        item.SubItems.Add((i + 7).ToString());
        item.SubItems.Add((i * i).ToString());
        listView1.Items.Add(item);
    }
}

核心改动说明

  1. 补充列标题:新增预留的空白第一列,以及对应业务数据的列,确保列数和子项数量匹配
  2. 初始化第一列为空:创建ListViewItem时传入空字符串,占据第一列位置
  3. 调整子项添加顺序:直接通过SubItems.Add添加业务数据,这些内容会自动填充到第二列及以后的位置

内容的提问来源于stack exchange,提问作者Daniel Lip

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:10:20