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

C#如何将List<string>内容按规则添加到多列ListView控件中

实现List分组绑定ListView的解决方案

前置准备

确保你的ListView控件已完成基础配置:

  • View属性设置为View.Details
  • 已提前添加4个列头,列顺序对应:协议、本地地址、远程地址、状态

代码实现

基础循环实现(无需额外依赖)

// 假设你的netstat解析结果存储在 List<string> netstatList 中
listView1.Items.Clear();
// 批量更新禁用界面重绘,提升加载效率
listView1.BeginUpdate();

// 每5个元素为一组遍历
for (int i = 0; i < netstatList.Count; i += 5)
{
    // 跳过不足5个元素的不完整分组
    if (i + 4 >= netstatList.Count) 
        break;
    
    // 提取对应字段,Trim处理掉多余空白字符
    string protocol = netstatList[i].Trim();
    string localAddress = netstatList[i + 1].Trim();
    string remoteAddress = netstatList[i + 2].Trim();
    string status = netstatList[i + 3].Trim();
    // 第5位为PID,如需展示可新增第5列后添加:string pid = netstatList[i+4].Trim();

    // 构造ListView行
    ListViewItem row = new ListViewItem(protocol);
    row.SubItems.Add(localAddress);
    row.SubItems.Add(remoteAddress);
    row.SubItems.Add(status);
    // 新增PID列后添加:row.SubItems.Add(pid);

    listView1.Items.Add(row);
}

listView1.EndUpdate();

LINQ分组实现(语法更简洁)

using System.Linq;

// ...其他逻辑
listView1.Items.Clear();
listView1.BeginUpdate();

// 按每5个元素分组
var connectionGroups = netstatList
    .Select((value, index) => new { value, index })
    .GroupBy(item => item.index / 5)
    .Where(group => group.Count() == 5); // 过滤不完整分组

foreach (var group in connectionGroups)
{
    var fields = group.Select(item => item.value.Trim()).ToList();
    ListViewItem row = new ListViewItem(fields[0]);
    row.SubItems.Add(fields[1]);
    row.SubItems.Add(fields[2]);
    row.SubItems.Add(fields[3]);
    listView1.Items.Add(row);
}

listView1.EndUpdate();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:54:03