WinForm 中 ListView 控件的实战应用与功能拓展
目录
一、初始化与列设置
二、右键菜单实现数据删除
三、视图切换(大图标、小图标、详情)
四、数据查找与高亮
五、数据修改(查找并替换)
六、数据添加
效果展示
在 WinForm 开发里,ListView
控件是用于展示列表数据并支持丰富视图交互的重要工具。它能以多种视图形式呈现数据,还可结合右键菜单、按钮等实现数据的增删改查及视图切换。下面结合实际代码,详细介绍 ListView
在项目中的典型用法。
一、初始化与列设置
public Form1()
{InitializeComponent();// 通过代码添加列ColumnHeader c = new ColumnHeader();c.Text = "地址";// 添加列listView1.Columns.Add(c);
}
功能解析
在窗体的构造函数中,我们对 ListView
控件 listView1
进行初始化。通过创建 ColumnHeader
对象并设置其 Text
属性(这里为 “地址” ),再调用 listView1.Columns.Add(c)
方法,为 ListView
添加了一列。这一步是构建 ListView
表格形式展示数据的基础,后续可在列中填充具体数据,比如文件路径、信息分类等内容,让数据展示更有条理 。
二、右键菜单实现数据删除
private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
{foreach (ListViewItem item in listView1.SelectedItems) {listView1.Items.Remove(item); }
}
功能解析
这里为右键菜单中的 “删除” 菜单项(删除ToolStripMenuItem
)绑定了点击事件。当用户在 ListView
中选中一个或多个项(SelectedItems
)后,点击 “删除” 菜单,通过 foreach
循环遍历选中的 ListViewItem
,调用 listView1.Items.Remove(item)
方法将选中项从 ListView
中移除。这样就实现了便捷的数据删除操作,用户能直观地通过右键菜单管理 ListView
中的数据。
三、视图切换(大图标、小图标、详情)
private void 大图标ToolStripMenuItem_Click(object sender, EventArgs e)
{listView1.View = View.LargeIcon;
}private void 小图标ToolStripMenuItem_Click(object sender, EventArgs e)
{listView1.View = View.SmallIcon ;
}private void 详情ToolStripMenuItem_Click(object sender, EventArgs e)
{listView1.View = View.Details;
}
功能解析
为右键菜单里分别对应大图标、小图标、详情视图的菜单项绑定点击事件:
- 点击 “大图标 ToolStripMenuItem” 时,设置
listView1.View = View.LargeIcon
,ListView
会以大图标形式展示数据项,每个项显示较大的图标和文字,适合需要突出显示项目图标的场景,比如图片浏览的缩略图展示(虽示例未涉及图片关联,但原理相通 )。 - 点击 “小图标 ToolStripMenuItem” ,
listView1.View = View.SmallIcon
,切换为小图标视图,图标变小,可在有限空间展示更多项目。 - 点击 “详情 ToolStripMenuItem” ,
listView1.View = View.Details
,以详细列表(表格)形式展示数据,能清晰呈现多列数据,方便查看每条数据的具体字段内容,像示例中若有多列,就可展示不同类别的信息,如类型、路径、文件等对应列的数据。
四、数据查找与高亮
private void button4_Click(object sender, EventArgs e){//查找功能for (int i = 0; i < listView1.Items.Count; i++){//作用: 用来获取列表视图中每一项的子项for (int j = 0; j < listView1.Items[i].SubItems.Count; j++){//判断列表中所有的子项是否与查找的文本一致if (listView1.Items[i].SubItems[j].Text == textBox1.Text){//如果找到 更改下颜色//根据子项的内容 找到本项所有内容listView1.Items[i].SubItems[j].ForeColor = Color.Red;}}}}
功能解析
当点击 button4
(假设是 “查找” 功能按钮 )时,通过两层 for
循环遍历 ListView
的所有项(Items
)及其子项(SubItems
)。外层循环 for (int i = 0; i < listView1.Items.Count; i++)
遍历 ListView
的每一项,内层循环 for (int j = 0; j < listView1.Items[i].SubItems.Count; j++)
遍历当前项的每个子项。然后判断子项的文本(SubItems[j].Text
)是否与文本框 textBox1
中输入的内容(要查找的内容)一致,若一致,就将该子项的文字颜色(ForeColor
)设置为红色,实现查找内容的高亮显示,方便用户快速定位到目标数据。
五、数据修改(查找并替换)
private void button6_Click(object sender, EventArgs e)
{for (int i = 0; i < listView1.Items.Count; i++){for (int j = 0; j < listView1.Items[i].SubItems.Count; j++){//判断列表中所有的子项是否与查找的文本一致if (listView1.Items[i].SubItems[j].Text == textBox1.Text){listView1.Items[i].SubItems[j].ForeColor = Color.Red;string[] str = textBox2.Text.Split(',');//更改//找到符合查询数据的项的子项的具体内容listView1.Items[i].SubItems[j].Text = str[i];}}}
}
功能解析
点击 button6
(假设是 “修改” 功能按钮 )时,同样利用两层 for
循环遍历 ListView
的项和子项。在找到与 textBox1
文本(要查找的内容)匹配的子项后,先将其文字颜色设置为红色(高亮显示找到的内容 ),接着通过 listView1.Items[i].SubItems[j].Text = textBox2.Text
代码,把该子项的文本替换为 textBox2
中的内容(要修改后的内容),实现了数据的查找替换功能,可用于更新 ListView
中展示的信息,比如修改文件描述、路径等内容 。
六、数据添加
private void button7_Click(object sender, EventArgs e)
{string[] str = textBox3.Text.Split(',');// 创建项ListViewItem item = new ListViewItem();item.Text = str[0];item.ImageIndex = 0;// 向子项添加内容item.SubItems.Add(str[1]);item.SubItems.Add(str[2]);item.SubItems.Add(str[3]);item.Font = new Font("楷体", 13.8f);listView1.Items.Add(item);
}
功能解析
点击 button7
(假设是 “添加” 功能按钮 )时,先通过 textBox3.Text.Split(',')
方法,以中文逗号 “,” 为分隔符,将 textBox3
中的文本分割成字符串数组 str
。然后创建 ListViewItem
对象 item
,设置其 Text
属性为 str[0]
(数组第一个元素,作为该项的主文本 ),并为其指定 ImageIndex
(这里设为 0,需提前在 ImageList
中配置对应索引的图片 )。接着通过 item.SubItems.Add(str[1])
等方法,依次为子项添加内容。还可设置 item.Font
来定义该项文字的字体样式,最后调用 listView1.Items.Add(item)
将创建好并填充了数据的 ListViewItem
添加到 ListView
中,实现数据的新增,比如添加新的文件信息、分类数据等到 ListView
展示列表里。
通过以上对 ListView
控件结合右键菜单、按钮等实现的增删改查及视图切换功能的介绍,能看出 ListView
在 WinForm 中可灵活构建具备丰富交互的数据展示模块,满足多样化的业务需求,无论是文件管理类界面,还是信息列表展示界面,都能很好地适配并提升用户操作体验 。
扩展资源
- ImageList:与
ListView
配合使用,用于管理图标资源(如大图标 / 小图标视图中的图片),可在设计时导入图片并关联到ListView
的SmallImageList
或LargeImageList
属性。 - ContextMenuStrip:右键菜单控件,用于实现
ListView
的右键操作(如示例中的删除、视图切换),可在设计时可视化配置菜单项。
在本设计中,将菜单右键事件同时添加到按键的点击事件中,使按键点击时也可以实现。
在按键属性中选择:

效果展示
按键
右键菜单
先查找再修改
推荐一个好用的图表网址,可以配置ImageList库:
阿里巴巴图标库https://www.iconfont.cn/