日期:2014-05-19  浏览次数:21039 次

一个调试过程中的异常!高手帮忙呀!!!急!!!!!!!!
第87行是这样的
for   (i   =   0;   i   <   22;   i++)
                        {
                                apply[i]   =   listView1.SelectedItems[0].SubItems[i].Text;///第87行
                        }

**************   异常文本   **************
System.ArgumentOutOfRangeException:   InvalidArgument=“0”的值对于“index”无效。
参数名:   index
      在   System.Windows.Forms.ListView.SelectedListViewItemCollection.get_Item(Int32   index)
      在   PatentManager.UserControl.answer.listView1_SelectedIndexChanged(Object   sender,   EventArgs   e)   位置   D:\Manager\UserControl\answer.cs:行号   87
      在   System.Windows.Forms.ListView.OnSelectedIndexChanged(EventArgs   e)
      在   System.Windows.Forms.ListView.WmReflectNotify(Message&   m)
      在   System.Windows.Forms.ListView.WndProc(Message&   m)
      在   System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&   m)
      在   System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&   m)
      在   System.Windows.Forms.NativeWindow.Callback(IntPtr   hWnd,   Int32   msg,   IntPtr   wparam,   IntPtr   lparam)
小弟不知道出了什么问题,应该怎么改,

------解决方案--------------------
通过索引去访问如果item数为0的话经常会产生异常的 所以最好是在遍历之前判断一下 当前容器里的对象数然后再去索引. 这样规避了异常速度也能接受的
------解决方案--------------------
确保SubItems[i]有0-21的索引!
------解决方案--------------------
if(listView1.SelectedItems.Count > 0)//还要确认你有22列
{
for (i = 0; i < 22; i++)
{
apply[i] = listView1.SelectedItems[0].SubItems[i].Text;///第87行
}

}