zoukankan      html  css  js  c++  java
  • C# 使用ListView.CheckedItems慢的问题

    看一段代码:

                List<string> list = new List<string>();
    
                for (int i = 0; i < lstView.CheckedIndices.Count; i++)
                {
                    list.Add(lstView.CheckedItems[i].SubItems[1].Text);
                }

    看上去没什么问题。可是今天我运行时,发现速度缓慢得像蜗牛一般。我的ListView有两千多条记录,全部处于选中状态。速度无法忍受,估计秒种处理的记录只有两三条。

    一开始以为 List 占内存太多造成的慢,但后来测试,下边代码并没有问题,速度很快,所以问题出现在lstView.CheckedItems[i].SubItems[1].Text 这句代码上。

                for (int i = 0; i < lstView.Items.Count; i++)
                {
                    list.Add(lstView.Items[i].SubItems[1].Text);
    
                }

    针对于使用ListView.CheckedItems慢的问题,可是换成了以下代码后,就完全正常了,飞快的就执行完了。

                ListViewItem item;
                for (int i = 0; i < lstView.Items.Count; i++)
                {
                    item = this.lstView.Items[i];
                    if (item.Checked)
                    {
                        list.Add(item.SubItems[1].Text);
                    }
                }

    具体什么原因引起的,我想应该是每次循环调用lstView.CheckedItems[i].SubItems[1].Text时,都会重新检测哪些项处于选中的状态或者涉及到装箱拆箱的缘故吧。

  • 相关阅读:
    SSH出现ls command not found
    SVN打包备份
    【转】Linux安装JDK1.7 prm
    任务
    java多线程
    JAVA开发中151个建议
    Linux Too Many OpenFiles
    【收藏】Linux tail命令
    Linux读取属性配置文件注意事项
    [转]Linux端口查看命令
  • 原文地址:https://www.cnblogs.com/hanguoshun/p/12759590.html
Copyright © 2011-2022 走看看