http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 5866|回复: 3

[咨询站长] 往ListView中添加数据的时候一直闪烁

[复制链接]
发表于 2014-5-3 18:01:01 | 显示全部楼层 |阅读模式
1金钱
在往ListView控件中添加数据的时候,会一直闪烁,而且速度也不快。
代码:
[C#] 纯文本查看 复制代码
ListViewItem lvi;
                foreach (KeyValuePair<string, string> ip in helper.iplist)
                {
                    lvi = new ListViewItem(count.ToString());
                    lvi.SubItems.Add(ip.Key);
                    lvi.SubItems.Add(ip.Value);
                    lvProxyIp.Items.Add(lvi);
                    count++;
                }                

我觉得是                    lvProxyIp.Items.Add(lvi);这句的问题,应该要使用                    lvProxyIp.Items.AddRange()吗?
于是修改成如下:
[C#] 纯文本查看 复制代码
int count = 0;
                ListViewItem lvi;
                ListViewItem[] lvis = new ListViewItem[2000];
                foreach (KeyValuePair<string, string> ip in helper.iplist)
                {
                    lvi = new ListViewItem(count.ToString());
                    lvi.SubItems.Add(ip.Key);
                    lvi.SubItems.Add(ip.Value);
                    lvis[count] = lvi;
                    count++;
                }
                lvProxyIp.Items.AddRange(lvis);

结果报错:
1.png
而且,要实现设置数组的大小,感觉不灵活,希望大家帮忙下~

最佳答案

查看完整内容

新建一个类,取名ListViewNF.cs,然后将以下代码粘贴进去! 用这个自定义控件,不要用listview using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; namespace DdosShenQi.Ui { public class ListViewNF : System.Windows.Forms.ListView { public ListViewNF() { // Activate double buffering this.SetStyle( ...


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-5-3 18:01:02 | 显示全部楼层
新建一个类,取名ListViewNF.cs,然后将以下代码粘贴进去!

用这个自定义控件,不要用listview

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace DdosShenQi.Ui
{
    public 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);
            }
        }
    }
}
回复

使用道具 举报

发表于 2014-5-3 18:06:57 | 显示全部楼层
用一个对象List多好了,List<obj>  这种方便,数据量大的话可以使用线程,或者是再建一个ListView对象,把数据先在新建 的这个里处理完再直接赋值给当前的,就不会闪烁了。
回复

使用道具 举报

 楼主| 发表于 2014-5-3 19:06:33 | 显示全部楼层
站长苏飞 发表于 2014-5-3 18:06
用一个对象List多好了,List  这种方便,数据量大的话可以使用线程,或者是再建一个ListView对象,把数据先 ...

老师,能大概写下吗?
你说的,我网上没找到参考资料额
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-4-29 20:45

© 2014-2021

快速回复 返回顶部 返回列表