WinForm ListView不分页加载大量数据

当WinForm的ListView加载大量数据时,会导致闪烁和速度慢的问题。解决方法包括使用Items.AddRange()、自定义ListView类或启用VirtualMode。推荐启用VirtualMode,它能显著提高加载速度并消除闪烁,但实现代码会更复杂,需要设置VirtualMode为true,设置VirtualListSize,绑定RetrieveVirtualItem事件等。
摘要由CSDN通过智能技术生成

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

下面说下解决方法:

1、使用listView1.Items.AddRange()代替Add

这种方法需要先将数据放入一个缓存数组中,然后调用AddRange一次性加入ListView中,同时可以用一个计数器记录一次性加入缓存的数量,如下:


             listView1.Items.Clear();
            if (vList.Count > 0)
            {
                
                int indexI = 0;
                List<ListViewItem> listBuffer = new List<ListViewItem>();
                foreach (var item in vList)
                {
                    ListViewItem li = new ListViewItem();
                    li.ImageIndex = 0;
                    li.SubItems[0].Text = item.Name;
                    li.Tag = item;
                    li.ForeColor = item.Status == 0 ? Color.Green : Color.Red;
    
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinForm中,可以通过以下几种方法来加载ListView的不同列的数据: 1. 使用ListView的Items属性添加数据项: 可以使用ListView的Items属性来添加数据项,然后为每个数据项的不同列分配数据。例如,假设ListView中有3列,可以使用以下代码加载不同列的数据: ```csharp ListViewItem item = new ListViewItem("第一列数据"); item.SubItems.Add("第二列数据"); item.SubItems.Add("第三列数据"); listView1.Items.Add(item); ``` 2. 使用ListView的Columns属性设置列: 首先,使用ListView的Columns属性来设置列的宽度和标题。然后,使用ListViewItem的SubItems属性来设置每个数据项对应列的数据。例如,假设ListView中有3列,可以使用以下代码加载不同列的数据: ```csharp listView1.Columns.Add("第一列标题", 100); listView1.Columns.Add("第二列标题", 100); listView1.Columns.Add("第三列标题", 100); ListViewItem item = new ListViewItem("第一列数据"); item.SubItems.Add("第二列数据"); item.SubItems.Add("第三列数据"); listView1.Items.Add(item); ``` 3. 使用自定义对象绑定数据: 可以创建一个自定义的对象,包含ListView各列对应的属性,然后将这些对象作为数据绑定到ListView中。例如,假设ListView中有3列,可以使用以下方式加载不同列的数据: ```csharp public class MyObject { public string Column1 { get; set; } public string Column2 { get; set; } public string Column3 { get; set; } } List<MyObject> dataList = new List<MyObject>(); dataList.Add(new MyObject { Column1 = "第一列数据", Column2 = "第二列数据", Column3 = "第三列数据" }); listView1.View = View.Details; listView1.Columns.Add("第一列标题"); listView1.Columns.Add("第二列标题"); listView1.Columns.Add("第三列标题"); foreach (var data in dataList) { ListViewItem item = new ListViewItem(data.Column1); item.SubItems.Add(data.Column2); item.SubItems.Add(data.Column3); listView1.Items.Add(item); } ``` 以上是一些常用的方法来加载WinForm ListView的不同列数据,具体使用哪种方法取决于业务需求和数据来源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值