-
大小: 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?????????????????{
????????????????????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個文件信息
評論
共有 條評論