winform入门篇 第14章 列表控件

列表控件

列表控件 ListView相当于 ListBox的增强版,支持多列显示

最典型的例子:Windows的文件管理器的列表显示
在这里插入图片描述

列表控件的几种视图:

Detail:详情模式
List: 列表模式
LargeIcon:大图标模式
Smallcon:小图标模式

列表控件的几个特点:

显示模式可以切换
可以多字段显示
可以设置图标
标签可以编辑
每列可以单独排序
自定义绘制的技术,在WinForm高级篇讲解

示例:

添加一个ListView

在这里插入图片描述
设置Dock 为Fill 填满整个空间

设置显示模式

在这里插入图片描述

设置列标题

在这里插入图片描述

添加数据项

在这里插入图片描述

运行结果

在这里插入图片描述

添加数据

演示:用ListView将 C:\盘下的文件夹、文件列出.

对照代码讲解。。

项目演示

在这里插入图片描述

图标设置:

listView1.LargelmageList 用于大图标模式
listView1.SmalllmageList 用于其他显示模式

在添加一项时,指定所使用的图片的索引
item = new ListViewItem(label, imageIndex)

创建LoadDir 遍历目录下文件夹
在这里插入图片描述
详情见 阿发你好 winform 教程

显示性能优化:

在批量添加数据时,为了避免界面频繁更新
listView1.BeginUpdate();
修改显示数据
listView1.EndUpdate();

切换显示模式

演示:添加右键菜单,实现4种显示模式的切换。。
–设置大图标列表
–添加右键菜单
------添加4个菜单项
------添加菜单项的点击处理
–添加右键处理
------点击右键时,弹出菜单

在这里插入图片描述
在这里插入图片描述
右键鼠标事件
在这里插入图片描述

要点与细节

1显示菜单时,要根据当前的显示模式,设置各菜单项的选中状态

列的排序

1 添加图标资源

Ico_Up
lco_Down
两个箭头图标,表示升序(ASC)和 降序(DESC)

2 将图标加入 SmalllmageList

imageList.lmages,Add("Sort ASC",Properties.Resources.lco Up);
imageList.lmages.Add("Sort DESC",Properties.Resources.lco Down);
listView1.Columns[0].lmageKey ="Sort ASC"

其中,
Images.Add(key, image)表示添加一个图像 image,并关联一个 key 值。后面可以根据 key 值获取此图片。

3 添加 Columnclick 事件处理

当点击列标题时,触发此事件

private void listView1_ColumnCliqk(object sender, ColumnClickEventArgs e)
{
	if(e.Column == 0)
		{
		}
}

本例中,只支持第一列的排序动作,所以这里要检查一个列号 e.Column 是不是第一列。

4 排序

排序时,要指定比较器 ListViewltemSorter,然后调用 Sort()方法开始排序

l

istView1.ListViewltemSorter = new MyListltemSorter(true);
listView1.Sort();
listView1.Columns[0].lmageKey = "Sort_ASC";

5 定义数据项

MyListltemTag定义 MyListltemTag,
每个 ListViewltem 关联一个 Tag对象

ListViewltem item =new ListViewltem(tag.name, imagelndex);
item.Tag = tag;

6 定义比较器 MyListltemSorter

比较器需要实现 IComparer 接口

public class MyListltemSorter : lComparer
public int Compare(object x, object y)
{
	ListViewltem item1 = x as ListViewltem;
	ListViewltemitem2 =	(ListViewltem)y;
}

实现 Compare 方法,比较对象x和y的相对大小。其中,传进来的 x y 对象实际上是 ListViewltem 类型。

要点与细节

1每个ListViewItem可以关联一个Tag对象在WinForm里,Tag一般用于关联一个数据对象

编辑标签

标签 Label:指每一个列表项的显示文本

演示:

列表项的标签可以被直接编辑。。(第一列)
在这里插入图片描述

步骤:

1 设置 LabelEdit 为true,允许编辑

在这里插入图片描述

2 启动编辑

鼠标先选中、再点击即可启动编辑

也可以调用 ListViewItem.BeginEdit()启动编辑(使用右键菜单,开启)

添加菜单项
在这里插入图片描述

添加事件响应
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 编辑验证

有两个事件:
BeforeLabelEdit:编辑前验证
AfterLabelEdit:编辑之后验证

e.Item 表示编辑项的索引
e.Label表示文本框中的值
e.CancelEdit 表示是否取消此次输入

在这里插入图片描述

实现不可添加重复数据
在这里插入图片描述

要点与细节

1当实现右键菜单方式时,需要记录当前点中的项
private ListViewltem mouseClickltem;
添加一个成员字段,在后续的菜单点击处理中使用

2 ListView控件只适合 Label 的编辑如果想编辑所有字段,应该考虑使用表格控件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/555573.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java高校办公室行政事务管理系统设计与实现(springboot+mysql源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的闲一品交易平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于mvc的高校办公室行政…

excel导出并合并

普通导出数据 需求 需要将相同列数据合并 效果图: 代码: package cn.silence.test;import lombok.AllArgsConstructor; import lombok.Data;/*** 班级信息*/ Data AllArgsConstructor public class ClassInfo {/*** 学院*/private String academy;/**…

OpenHarmony多媒体-ijkplayer

简介 ijkplayer是OpenHarmony环境下可用的一款基于FFmpeg的视频播放器。 演示 编译运行 1、通过IDE工具下载依赖SDK,Tools->SDK Manager->OpenHarmony SDK 把native选项勾上下载,API版本>9 2、开发板选择RK3568,ROM下载地址. 选择…

直流无刷散热风扇的知识原理与内部构成

①直流无刷风扇的结构:主要可分为转子、定子、外框、电机(马达)这四个主要部分以及一些其它的零碎的部件 第一,风扇转子部分: 包括风扇扇叶,是产生空气流动的核心、散热风扇的轴心,用来支撑平衡扇叶滚动、转子磁环,永…

Python路面车道线识别偏离预警

程序示例精选 Python路面车道线识别偏离预警 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《Python路面车道线识别偏离预警》编写代码,代码整洁,规则,易…

Spring Boot + 事务钩子函数,打造高效支付系统!

今天,我继续安利一个独门绝技:Spring 事务的钩子函数。 单纯的讲技术可能比较枯燥乏味。 接下来,我将以一个实际的案例来描述Spring事务钩子函数的正确使用姿势。 一、案例背景 拿支付系统相关的业务来举例。在支付系统中,我们…

Nodejs 第六十四章(SSO单点登录)

单点登录 单点登录(Single Sign-On,简称SSO)是一种身份认证和访问控制的机制,允许用户使用一组凭据(如用户名和密码)登录到多个应用程序或系统,而无需为每个应用程序单独提供凭据 SSO的主要优…

openGauss学习笔记-266 openGauss性能调优-TPCC性能调优测试指导-文件系统配置

文章目录 openGauss学习笔记-266 openGauss性能调优-TPCC性能调优测试指导-文件系统配置266.1 查看当前数据盘的文件系统类型266.2 对于需要修改的磁盘,备份所需的数据至其他磁盘或其他服务器266.3 格式化磁盘为xfs文件系统266.4 执行**步骤一** openGauss学习笔记-…

【Keil MDK5新建工程】STM32F103C8T6

一、参数及片上外设 二、系统结构及引脚定义 三、工程架构及新建工程步骤 四、GPIO模式 一、参数及片上外设 二、系统结构及引脚定义 三、工程架构及新建工程步骤 建立工程文件夹,Keil中新建工程,选择型号 工程文件夹里建立Core、Library、User等文件夹…

2024年华中杯数学建模竞赛ABC题思路分析

简单分析一下各个题目可能需要用到的方法和模型,完整代码和成品论文见文末 A题 太阳能路灯光伏板的朝向设计问题: 1. 球面几何、天文学相关知识,如赤纬角、太阳高度角、时角等概念和公式 2. 太阳辐射模型,根据太阳能辐射强度、大气衰减系数等计算地表太阳辐射强度…

绝对隔离+底层限制,成就猎鹰蜜罐“牢不可破”的立体化安全

前言 自网络诞生以来,攻击威胁事件层出不穷,网络攻防对抗已成为信息时代背景下的无硝烟战争。然而,传统的网络防御技术如防火墙、入侵检测技术等都是一种敌暗我明的被动防御,难以有效应对攻击者随时随地发起的无处不在的攻击和威胁…

【学习笔记】Vue3源码解析:第五部分 - 实现渲染(1)

课程地址:【已完结】全网最详细Vue3源码解析!(一行行带你手写Vue3源码) 第五部分-:(对应课程的第29-32节) 第29节:《实现渲染的createRender方法》 1、通过createApp()方法得到一个…

AI热潮下,公链基础设施赛道都有哪些变化?

最近在一级市场,最火热的赛道无疑是AI,其次是BTC,每天聊的项目80%都集中在这两个赛道,我个人最多的时候一天可以聊5,6个AI项目。 可以预见的是AI泡沫会在明后年达到顶峰,随着数以百计的AI新项目上线&#…

QT实现客户端断开连接

Widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), socket(new QTcpSocket(this)) {ui->setupUi(this);//初始化界面ui->msgEdit->setEnabled(false); //不可用ui-…

SQL Server Management Studio 显示行号

前言 在使用 SQL Server Management Studio (SSMS) 进行数据库管理和查询时,能够看到代码的行号是非常有用的。这可以帮助您更容易地定位代码错误、讨论特定的代码行,或者在执行长查询时快速找到特定行。在本文中,我将向您展示如何在 SSMS 中…

AIDE:自动驾驶目标检测的自动数据引擎

AIDE:自动驾驶目标检测的自动数据引擎 摘要IntroductionRelated WorksMethodData FeederModel Updater4 Experiments 摘要 自动驾驶车辆(AV)系统依赖于健壮的感知模型作为安全保证的基石。然而,道路上遇到的物体表现出长尾分布&a…

图像生成模型浅析(Stable Diffusion、DALL-E、Imagen)

目录 前言1. 速览图像生成模型1.1 VAE1.2 Flow-based Model1.3 Diffusion Model1.4 GAN1.5 对比速览 2. Diffusion Model3. Stable Diffusion3.1 Text Encoder3.2 Decoder3.3 Generation Model 总结参考 前言 简单学习下图像生成模型的相关知识🤗 以下内容来自于李宏…

vue3+elment复杂详情页面打开后,再打开其他页面都显示空白,控制台也没什么特殊报错

页面使用了el-tabs 、 el-tab-pane、el-table 等标签 但是经测试不是这些问题导致的 js也使用了onMounted ,但是除掉也时空白页面 反正之前人写的页面可乱,尤其是js这块,穿插引用import一大堆 主题页面样式布局如下 最后看到页面代码太乱…

古籍数字化平台:精校功能介绍

一、平台介绍 古籍数字化平台,本着公益性、低成本、合作共赢的三大原则,功能涵盖古籍OCR识别、族谱县志OCR识别、民国报纸OCR识别、图文逐字校对、数据著录、智能标点分段、精编排版、智能白话译文等,是一站式线上整理全流程平台。 平台集成…

备战面试K8S

备战面试&&K8S Kubernetes关于DockerDocker的优缺点分析 WebAssemblyWebAssembly与Container比较 CtrCrictlCtr和CriCtl的区别 Pod生命周期PodConditions容器状态Pod容器组成生命周期的流程 Kubelet EFK日志采集工具的优缺点 Kubernetes 容器运行接口 Container Runti…