平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“C#中WinForm ListView 列表控件”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
从实现思路看,ListView 是 WinForm 常用列表展示控件,用来展示多条结构化数据,类似文件资源管理器效果,兼容五种展示视图,常搭配 ImageList 图标集合实现图文列表。
借助 View 属性设置展示样式,默认值:LargeIcon(大图标)
属性值 | 说明 |
|---|---|
Details | 详细视图,标准的二维表格,第一行为表头(最常用) |
LargeIcon(默认值) | 大图标,每一项显示为一个大图标 |
SmallIcon | 小图标,每一项显示为一个小图标 |
List | 列表,每项单行展示 |
Tile | 平铺,显示大图标,并在右侧显示详细信息 |
核心注意:仅 Details 详情模式 兼容显示表头、网格线、整行选中效果。
属性 | 说明 |
|---|---|
Name | 控件的名称,用来后台调用控件 |
Items | 包含控件中所有行项的集合 |
Columns | 控件中显示的所有列标题的集合 |
View | 控件的显示视图(五种枚举样式) |
LargeImageList | 大图标视图所采用的 ImageList 图标集合 |
SmallImageList | 小图标视图所采用的 ImageList 图标集合 |
GridLines | 是否显示行列网格线(仅详情模式生效) |
MultiSelect | 是否允许鼠标多选列表项 |
SelectedItems | 拿到控件中所有已选中的项 |
FullRowSelect | 单击单元格是否选中整行及所有子项 |
方法 | 说明 |
|---|---|
Clear | 从控件中移除所有项和列,清空ListView |
事件 | 说明 |
|---|---|
Click | 在单击ListView控件时触发 |
SelectedIndexChanged | 当选定项发生更改时触发 |
using System;
using System.Windows.Forms;
namespace _02ListView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 1. 绑定大图标的图片集合
listView2.LargeImageList = imageList1;
// 2. 绑定小图标的图片集合
listView2.SmallImageList = imageList2;
// 3. 设置为【详情表格模式】(支持多列)
listView2.View = View.Details;
// 4. 添加表头列
listView2.Columns.Add("名称");
listView2.Columns.Add("修改时间");
listView2.Columns.Add("类型");
listView2.Columns.Add("大小");
// 5. 创建第一行数据项(主项,第一列内容)
ListViewItem item1 = new ListViewItem("win");
// 给当前行添加多列子数据
item1.SubItems.Add("2026/2/1");
item1.SubItems.Add("文件夹");
item1.SubItems.Add("20G");
// 6. 创建第二行
ListViewItem item2 = new ListViewItem("C盘");
item2.SubItems.Add("2026/2/1");
item2.SubItems.Add("文件夹");
item2.SubItems.Add("202G");
// 7. 创建第三行,设置Name用于按键删除
ListViewItem item3 = new ListViewItem("D盘");
item3.Name = "ss"; // 设置唯一标识Key
item3.SubItems.Add("2026/2/1");
item3.SubItems.Add("文件夹");
item3.SubItems.Add("208G");
// 8. 将所有行添加到ListView控件中显示
listView2.Items.Add(item1);
listView2.Items.Add(item2);
listView2.Items.Add(item3);
}
}
}
// 1. 根据对象直接删除指定项
listView2.Items.Remove(item1);
// 2. 根据索引删除(索引从0开始)
listView2.Items.RemoveAt(1);
// 3. 根据Name键值删除(最灵活、推荐)
listView2.Items.RemoveByKey("ss");
列表视图五种样,详情表格最常用;
表头Columns先添加,Item是行Sub是列;
大小图标绑图集,视图Details才列表;
删值三种索引名,灵活移除不用愁。
实际处理时,总的来说,WinForm ListView 列表适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。