当前位置: 首页 > news >正文

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/

http://www.lryc.cn/news/615123.html

相关文章:

  • kafka架构原理快速入门
  • AI大语言模型在生活场景中的应用日益广泛,主要包括四大类需求:文本处理、信息获取、决策支持和创意生成。
  • 软件定义车辆加速推进汽车电子技术
  • Blender 快捷键速查表 (Cheat Sheet)
  • 【线性代数】6二次型
  • 可直接运行的 Playwright C# 自动化模板
  • 通过 Certimate 统一管理 SSL 证书 支持自动化申请、全平台部署
  • 【线性代数】线性方程组与矩阵——(1)线性方程组与矩阵初步
  • 数据挖掘2.6 Perceptron Modeling 感知器建模
  • 我想做自动化报社保,用哪种技术更好一点呢?
  • stm32项目(25)——基于stm32的植物生长箱环境监测系统
  • 「iOS」————响应者链与事件传递链
  • GPT-5:数字大脑的进化史
  • 人工智能-python-数据处理实战-特征降维(PCA)
  • CD63.【C++ Dev】多态(2): 剖析虚函数表的前置知识
  • 【线性代数】线性方程组与矩阵——(3)线性方程组解的结构
  • 【CTF】PHP反序列化基础知识与解题步骤
  • 华为实验:SSH
  • 华为实验: 单区域/多区域OSPF
  • [优选算法专题一双指针——四数之和]
  • 【Leecode 随笔】
  • 大模型在垂直场景的创新应用:搜索、推荐、营销与客服新玩法
  • Q-learning强化算法万字详解
  • 关于C语言本质的一些思考
  • Python(6) -- 数据容器
  • Python映射合并技术:多源数据集成的高级策略与工程实践
  • 3D感知多模态(图像、雷达感知)
  • 容器技术基础与实践:从镜像管理到自动运行配置全攻略
  • 大数据与财务管理:未来就业的黄金赛道
  • 深入理解C++构造函数与初始化列表