-
大小: 109KB文件类型: .rar金币: 2下载: 1 次发布日期: 2021-06-09
- 语言: C#
- 标签: C# ListView VirtualMode CheckBoxes 高性能
资源简介
C#中,在ListView下显示大量信息时,需要在VirtualMode模式下才能够实现快速高性能操作.但是,在VirtualMode模式下,CheckBoxes的实现却不是那么简单,不能通过设定CheckBoxes = true来实现,还要有特别的处理才能显示选择框.
最近需要用到带CheckBoxes的VirtualMode模式的ListView控件,通过查找资料和研究,终于搞定,和朋友们分享.考虑到其中的辛苦,大家多给点分支持下吧
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace ListViewTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender EventArgs e)
{
lstData.RetrieveVirtualItem += new RetrieveVirtualItemEventHandler(listView_RetrieveVirtualItem);
lstData.CheckBoxes = true;
lstData.VirtualListSize = lstData.VirtualListSize;
lstData.VirtualMode = true;
lstData.OwnerDraw = false;
// lstData.DrawItem +=
// new DrawListViewItemEventHandler(listView_DrawItem);
lstData.MouseClick += new MouseEventHandler(listView_MouseClick);
lstData.MouseDoubleClick += new MouseEventHandler(listView_MouseDoubleClick);
}
// 也可以用这种方式刷出复选框 但是列表标题会乱掉
// void listView_DrawItem(object sender DrawListViewItemEventArgs e)
// {
// e.DrawDefault = true;
// if (!e.Item.Checked)
// {
// e.Item.Checked = true;
// e.Item.Checked = false;
// }
// }
void listView_MouseClick(object sender MouseEventArgs e)
{
ListView lv = (ListView)sender;
ListViewItem lvi = lv.GetItemAt(e.X e.Y);
if (lvi != null)
{
if (e.X < (lvi.Bounds.Left + 16))
{
lvi.Checked = !lvi.Checked;
lv.Invalidate(lvi.Bounds);
}
}
}
void listView_MouseDoubleClick(object sender MouseEventArgs e)
{
ListView lv = (ListView)sender;
ListViewItem lvi = lv.GetItemAt(e.X e.Y);
if (lvi != null)
lv.Invalidate(lvi.Bounds);
}
private MyListSorter m_MySorter = new MyListSorter();
private List m_lstListItem = new List();
void listView_RetrieveVirtualItem(object sender RetrieveVirtualItemEventArgs e)
{
try
{
e.Item = m_lstListItem[e.ItemIndex];
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnAdd_Click(object sender EventArgs e)
{
int NR = int.Parse(txtCount.Text);
try
{
ListViewItem lstItem = null;
// 构造列表内容并添加
string[] strItem = new string[lstData.Columns.Count];
for (int i = 0; i < NR; i++)
{
for (int j = 0; j
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 16896 2013-02-04 10:59 ListViewTest\bin\Debug\ListViewTest.exe
文件 38400 2013-02-04 10:59 ListViewTest\bin\Debug\ListViewTest.pdb
文件 14328 2013-02-04 11:03 ListViewTest\bin\Debug\ListViewTest.vshost.exe
文件 490 2009-06-11 05:14 ListViewTest\bin\Debug\ListViewTest.vshost.exe.manifest
文件 21504 2013-02-04 14:57 ListViewTest\bin\x86\Debug\ListViewTest.exe
文件 54784 2013-02-04 14:57 ListViewTest\bin\x86\Debug\ListViewTest.pdb
文件 14848 2013-02-04 14:55 ListViewTest\bin\x86\Debug\ListViewTest.vshost.exe
文件 490 2009-06-11 05:14 ListViewTest\bin\x86\Debug\ListViewTest.vshost.exe.manifest
文件 7561 2013-02-04 14:57 ListViewTest\Form1.cs
文件 10862 2013-02-04 14:57 ListViewTest\Form1.Designer.cs
文件 5814 2013-02-04 14:56 ListViewTest\Form1.resx
文件 11143 2013-02-04 11:48 ListViewTest\ListViewEx.cs
文件 4643 2013-02-04 11:43 ListViewTest\ListViewTest.csproj
文件 1245 2010-05-31 09:56 ListViewTest\MyListSorter.cs
文件 1374 2013-02-04 11:03 ListViewTest\obj\Debug\ListViewTest.csproj.FileListAbsolute.txt
文件 847 2013-02-04 10:49 ListViewTest\obj\Debug\ListViewTest.csproj.GenerateResource.Cache
文件 16896 2013-02-04 10:59 ListViewTest\obj\Debug\ListViewTest.exe
文件 180 2013-02-04 10:49 ListViewTest\obj\Debug\ListViewTest.Form1.resources
文件 38400 2013-02-04 10:59 ListViewTest\obj\Debug\ListViewTest.pdb
文件 180 2013-01-31 16:09 ListViewTest\obj\Debug\ListViewTest.Properties.Resources.resources
文件 719 2013-02-04 14:55 ListViewTest\obj\x86\Debug\ListViewTest.csproj.FileListAbsolute.txt
文件 847 2013-02-04 14:57 ListViewTest\obj\x86\Debug\ListViewTest.csproj.GenerateResource.Cache
文件 21504 2013-02-04 14:57 ListViewTest\obj\x86\Debug\ListViewTest.exe
文件 180 2013-02-04 14:57 ListViewTest\obj\x86\Debug\ListViewTest.Form1.resources
文件 54784 2013-02-04 14:57 ListViewTest\obj\x86\Debug\ListViewTest.pdb
文件 180 2013-02-04 11:43 ListViewTest\obj\x86\Debug\ListViewTest.Properties.Resources.resources
文件 493 2010-05-31 09:35 ListViewTest\Program.cs
文件 1368 2010-05-31 09:35 ListViewTest\Properties\AssemblyInfo.cs
文件 2874 2010-05-31 09:35 ListViewTest\Properties\Resources.Designer.cs
文件 5612 2010-05-31 09:35 ListViewTest\Properties\Resources.resx
............此处省略21个文件信息
相关资源
- C# 调用win32 api函数-user32.dll详细说明
- C# 调用BarTender打印条码DEMO
- 大型比赛竞赛抽签系统 可打印 c# vs
- C#编写的Gerber查看器
- lua C# .Net4.0 vs2010 LuaInterface
- C#十六进制编辑器
- 明华URF-35H读卡器 C#读写源码 为大家
- C#文件流读取CSV文件
- c#读写PDF文件sql
- C# winform Socket大文件传输
- c#车牌识别系统附30张测试图片
- 《C#面向对象程序设计》源代码(CS)
- 金旭亮《C#面向对象程序设计》教案
- 试题库管理系统毕业论文(C#)源程序
- 学校网站原代码(C#.NET)
- C#-数据库操作技术-员工管理系统
- c#web开发入门经典
- C#与Matlab混合编程的几种方式
- c# 开发与 mysql数据库实现的增删改查
- C#异步操作 异步查询数据库 异步处理
- Basler相机通过IO触发源码
- [源代码] 《领域驱动设计 (C# 2008 实
- 松下PLC与C#通讯串口调试入门教程.z
- USB 继电器控制器 LCUS-1 保证能用 c#
- C# AES加密解密小工具
- C#圆形按钮,非常漂亮动态~~
- [精]C#仿QQ右下角弹出提示框()
- C#进程间通信-共享内存代码
- 有史以来最简单的三层(C#)
- vb调用c#编写的串口DLL文件(vb源码
评论
共有 条评论