根据listview中第二列数据的大小,按照升序将插入数据插入在listview相应位置int i=this.lVw .Items .Count-1;
foreach(ListViewItem item in this.lVw.Items)
{
if(Coil!=item.SubItems [2].Text)//Coil为输入数据的第二列
{
if(this.lVw .Items [i].SubItems [0].Text .CompareTo (this.lVw .Items [i+1].SubItems [0].Text )<0) {
this.lVw .Items .Insert (i,new ListViewItem(new string[]{"0","AH0000T001", "007000", "01","1" ,"2" ,"2"}));
}
}
else
{
}
}
红色部分提示超出范围   ,i的范围有什么问题

解决方案 »

  1.   

    假设现在你的Items有4个[0][1][2][3],那么Count就是4,i就是3当你访问到循环里头。Items[3]也就是第四个Item了,你再访问[i+1]即Item[4],也就是Items列表中的第五个项,当然就越界了记住是从0开始的,不是1
      

  2.   

    试着这样?            int i=this.lVw .Items .Count-1;
                foreach(ListViewItem item in this.lVw.Items)
                {
                    if(Coil!=item.SubItems [2].Text)//Coil为输入数据的第二列
                    {
                        if(this.lVw .Items [i-1].SubItems [0].Text .CompareTo (this.lVw .Items [i].SubItems [0].Text )<0)                {
                            this.lVw .Items .Insert (i,new ListViewItem(new string[]{"0","AH0000T001", "007000", "01","1" ,"2" ,"2"}));
                        }
                    }
                    else
                    {
                    }
                }hope can help you!
      

  3.   

    int i=this.lVw .Items .Count-1;
    foreach(ListViewItem item in this.lVw.Items)
    {
       if(Coil!=item.SubItems [2].Text)//Coil为输入数据的第二列(错,这里你写的是第3列,项的index是从0开始
       {
         if(this.lVw .Items [i].SubItems [0].Text .CompareTo (this.lVw .Items [i+1].SubItems [0].Text )<0)//这句具体错在i+1,i+1=lvw.items.cout-1+1=lvw.items.count,lvw是没有i+1这么多项的。index最大也只有this.lVw .Items .Count-1项
         {
              this.lVw .Items .Insert (i,new ListViewItem(new string[]{"0","AH0000T001", "007000", "01","1" ,"2" ,"2"}));
         }
       }
       else
       {
       }
    }