如何让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); } }
核心改动说明
- 补充列标题:新增预留的空白第一列,以及对应业务数据的列,确保列数和子项数量匹配
- 初始化第一列为空:创建
ListViewItem时传入空字符串,占据第一列位置 - 调整子项添加顺序:直接通过
SubItems.Add添加业务数据,这些内容会自动填充到第二列及以后的位置
内容的提问来源于stack exchange,提问作者Daniel Lip
相关产品推荐
相关产品推荐

