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

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.xdnf.cn/news/17475.html

相关文章:

  • Bee 2.5.2.6 发布
  • 库函数蜂鸣器的使用(STC8)
  • Typora上传图片保存到assets目录下
  • 线程池多反应堆服务器webserver(c++)
  • Web文件上传:本地与云存储实战
  • 数据分析框架从 “工具堆砌” 转向 “智能协同”
  • 每日算法刷题Day59:8.9:leetcode 队列8道题,用时2h30min
  • 【JVM】深入解析Java虚拟机
  • 全志MPP学习(1)-全志MPP概念理清
  • VisionPro常用标定方式
  • Java学习Collection单列集合中的三种通用遍历方法
  • CPO-SVM分类预测+特征贡献SHAP分析,通过特征贡献分析增强模型透明度,Matlab代码实现,引入SHAP方法打破黑箱限制,提供全局及局部双重解释视角
  • Vue 服务端渲染(SSR)详解
  • 饿了么零售 sign 分析
  • [ MySQL 数据库 ] 环境安装配置和使用
  • 支付宝「安全发-甲方直发」架构详解及与「安全发ISV模式」对比
  • 二十八天(数据结构:图的补充)
  • 仓颉编程语言的match表达式
  • 【科研绘图系列】R语言绘制气泡图
  • 用户、组和目录的磁盘配额
  • GDB 调试全方位指南:从入门到精通
  • CSS--后端也有自己的CSS要学
  • 二、RuoYi-Cloud-Plus 拉取到本地的准备和注意事项
  • 睿抗开发者大赛国赛-24
  • 《设计模式之禅》笔记摘录 - 14.组合模式
  • 库函数NTC采样温度的方法(STC8)
  • Seata分布式事务环境搭建
  • linux-LVM 逻辑卷管理
  • Uniworld-V1、X-Omni论文解读
  • 数据结构(二叉树)