listview winfrom 表头_C# Winform ListView使用

本文详述了C# Winform中ListView的使用,包括设置视图、添加列和行、防止闪烁、滚动到最后一行、点击表头排序等核心功能。通过示例代码,展示了如何动态添加记录并实现自定义排序,帮助开发者掌握ListView的高级用法。
部署运行你感兴趣的模型镜像

以下内容均来自网上,个人收集整理,具体出处也难确认了,就没写出处了;

一、基本使用:

listView.View = View.Details;//设置视图

listView.SmallImageList = imageList;//设置图标

//添加列

listView.Columns.Add("本地路径", 150, HorizontalAlignment.Left);

listView.Columns.Add("远程路径", 150, HorizontalAlignment.Left);

listView.Columns.Add("上传状态", 80, HorizontalAlignment.Left);

listView.Columns.Add("耗时", 80, HorizontalAlignment.Left);

//添加行

var item = new ListViewItem();

item.ImageIndex = 1;

item.Text = name; //本地路径

item.SubItems.Add(path); //远程路径

item.SubItems.Add("ok"); //执行状态

item.SubItems.Add("0.5"); //耗时统计

listView.BeginUpdate();

listView.Items.Add(item);

listView.Items[listView.Items.Count - 1].EnsureVisible();//滚动到最后

listView.EndUpdate();

二、动态添加记录,ListView不闪烁:

1.新建一个C# 类,命名为ListViewNF(NF=Never/No Flickering)

2.复制如下代码

class ListViewNF : System.Windows.Forms.ListView

{

public ListViewNF()

{

// Activate double buffering

this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);

// Enable the OnNotifyMessage event so we get a chance to filter out

// Windows messages before they get to the form's WndProc

this.SetStyle(ControlStyles.EnableNotifyMessage, true);

}

protected override void OnNotifyMessage(Message m)

{

//Filter out the WM_ERASEBKGND message

if (m.Msg != 0x14)

{

base.OnNotifyMessage(m);

}

}

}

3.修改你的WinForm对应的xxxx.Design.cs,将系统默认生成的System.Windows.Forms.ListView改为ListViewNF即可。

三、动态添加记录,跳转到最后行:

实现代码:

ListViewItem Item = new ListViewItem();

Item.SubItems.Clear();

.....相关其他代码

this.listView1.Items.Add(Item);

Item.EnsureVisible(); //关键的实现函数

四、点击表头实现排序:

1.增加自定义排序类:

using System;

using System.Collections;

using System.Windows.Forms;

namespace Whir.Software.Framework.UI

{

public class ListViewSort : IComparer

{

private readonly int _col;

private readonly bool _descK;

public ListViewSort()

{

_col = 0;

}

public ListViewSort(int column, object desc)

{

_descK = (bool)desc;

_col = column; //当前列,0,1,2...,参数由ListView控件的ColumnClick事件传递

}

public int Compare(object x, object y)

{

int tempInt = String.CompareOrdinal(((ListViewItem)x).SubItems[_col].Text,

((ListViewItem)y).SubItems[_col].Text);

if (_descK)

{

return -tempInt;

}

return tempInt;

}

}

}

2.给ListView增加点击表头事件:

private void listView_ColumnClick(object sender, ColumnClickEventArgs e)

{

if (listView.Columns[e.Column].Tag == null)

{

listView.Columns[e.Column].Tag = true;

}

var tabK = (bool)listView.Columns[e.Column].Tag;

listView.Columns[e.Column].Tag = !tabK;

listView.ListViewItemSorter = new ListViewSort(e.Column, listView.Columns[e.Column].Tag);

//指定排序器并传送列索引与升序降序关键字

listView.Sort();//对列表进行自定义排序

}

winform ListView应用之分组、重绘图标、网格线 (c# .net winform)

最近在winform应用中需要用到可分组的数据列表功能,DataGridView默认没有提供分组的功能,而OutlookGrid(http://www.codeproject.com/KB/grid/ ...

[转]C# Winform ListView使用

以下内容均来自网上,个人收集整理,具体出处也难确认了,就没写出处了: 一.基本使用: listView.View = View.Details;//设置视图 listView.SmallImageLi ...

陈年佳酿之 - Winform ListView 控件 double click 事件中获取选中的row与column

背景 最近收到了一个关于以前项目的维护请求,那时的楼主还是刚刚工作的小青年~~~ 项目之前使用的是.net/winform.今天重新打开代码,看着之前在FrameWork2.0下面的代码, 满满的回忆 ...

winform listview用法

资源收集 C#winform中ListView的使用 C# WinForm开发系列 - ListBox/ListView/Panel(介绍了一些listview的高级用法) 直接上代码 示例一: th ...

WinForm ListView不分页加载大量数据

WinForm的ListView在加载大量数据时会出现闪烁的问题,同时数据加载很慢.如果你的列表中有超过千条的数据且不做特殊处理还是用普通的ListView.Items.Add(),估计你的用户得抱怨 ...

Winform listview控件、 容器控件

1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置行和列之间是否显示网格 ...

winform listview控件、容器控件

ListVies控件主要用于展示数据 常用属性: FullRowSelect:设置是否行选择模式.(默认为false) (开启之后一下选中一行数据) GridLines:设置行和列之间是否显示网格线. ...

winform listview控件

ListView控件 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设置 ...

Winform ListView 元素拖动

//ListView 属性 /* AllowDrop : True */ ListView objLVDrag; private void listView_DragDrop(object sende ...

随机推荐

在SharePoint中创建可自定义属性的文件夹

概况 阅读时间:约5分钟 适用版本:SharePoint Server 2010及以上 面向用户:普通用户.管理员.开发人员 难度指数:★★★☆☆ SharePoint中的文件夹分为2种,一种是文档库 ...

rosetta common sh: mpiCC command not found解决方法

在执行多线程编译rosetta时执行: python scons.py bin mode=release extras=mpi -j8 编译安装rosetta 会出现错误sh: mpiCC comma ...

ASP.NET运行时详解 生命周期入口分析

说起ASP.NET的生命周期,网上有很多的介绍.之前也看了些这方面的博客,但我感觉很多程序猿像我一样,看的时候似乎明白,一段时间过后又忘了.所以,最近Heavi花了一段时间研究ASP.NET的源代码, ...

四种简单的排序算法的php实现

无聊,用php写几个排序算法,算法介绍请移步这里,这里使用php实现了几个简单的,如下 //选择排序 function selection_sort($arr){ $len = count($arr) ...

Hbase0.96源码之HMaster(二)Hmaster主要循环becomeActiveMaster

1,Hmaster主循环主要这里主要有: 1,1 becomeActiveMaster(startupStatus); 1.2 finishInitialization 1.3 loop() beco ...

Python学习笔记4基本数据类型

start:16:00 1.Python基本数据类型 (1)数字类型及其操作 整数类型 浮点数类型 浮点数间运算存在不确定尾数,不是bug 复数类型 数值运算操作符 (2)数值运算函数    . 2. ...

[c#.net]遍历一个对象中所有的属性和值

利用反射 SpDictItem sp = GetCFHObject.GetSpItem("); PropertyInfo[] propertys = sp.GetType().GetProp ...

C语言递归函数讲解

递归函数是什么? 是函数.................... 你可以把它理解成是for循环与死循环的结合的函数.简单的说:递归函数是有条件终止的死循环函数: 死循环函数这里是指在函数体中调用自身: ...

您可能感兴趣的与本文相关的镜像

LobeChat

LobeChat

AI应用

LobeChat 是一个开源、高性能的聊天机器人框架。支持语音合成、多模态和可扩展插件系统。支持一键式免费部署私人ChatGPT/LLM 网络应用程序。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值