日期:2014-05-20  浏览次数:21176 次

ArrayList类型转换问题
我自己写了一个将ListView列数据转换为ArrayList的方法:
///   <summary>
///   ListView列数据转换为ArrayList
///   </summary>
///   <param   name= "lv "> ListView </param>
///   <param   name= "Ind "> 列索引 </param>
///   <returns> </returns>
public   static   ArrayList   ListViewCol(   ListView   lv   ,int   Ind   )
{
ArrayList   col   =   new   ArrayList();
for(   int   i=0;i <lv.Items.Count   ;i++   )
{
col.Add(   lv.Items[i].SubItems[Ind].Text.Trim()   )   ;
}
return   col   ;
}

但是在将它转换为int[]或者其他类型数组的时候报错:
源数组中至少有一个元素无法被向下转换到目标数组类型。
我的转换代码:
obj.IDNo   =   (int[])   Comm.Functions.ListViewCol(   lvInput,0   ).ToArray(typeof(int))   ;
obj.IDNo   是一个int型的数组。

------解决方案--------------------
自己可以再扩充一下:
#region ListView列数据转换为ArrayList
/// <summary>
/// ListView列数据转换为ArrayList
/// </summary>
/// <param name= "lv "> ListView </param>
/// <param name= "Ind "> 列索引 </param>
/// <param name= "TypeID "> 要转换的类型(0:string 1:int 2:decimal 3:datetime) </param>
/// <returns> </returns>
public static ArrayList ListViewCol( ListView lv ,int Ind ,int TypeID)
{
ArrayList col = new ArrayList();
if( TypeID==0 )//string
for( int i=0;i <lv.Items.Count ;i++ )
{
col.Add( lv.Items[i].SubItems[Ind].Text.Trim() ) ;
}
else if( TypeID==1 )//int
for( int i=0;i <lv.Items.Count ;i++ )
{
col.Add( int.Parse(lv.Items[i].SubItems[Ind].Text.Trim()) ) ;
}
else if( TypeID==2 )//decimal
for( int i=0;i <lv.Items.Count ;i++ )
{
col.Add( decimal.Parse(lv.Items[i].SubItems[Ind].Text.Trim()) ) ;
}
else if( TypeID==3 )//datetime
for( int i=0;i <lv.Items.Count ;i++ )
{
col.Add( System.DateTime.Parse(lv.Items[i].SubItems[Ind].Text.Trim()) ) ;
}
return col ;
}
#endregion