方法一(https://zhidao.baidu.com/question/201240996.html百度上的,理论可行,实际不行):
string s=null;
for (int i = 0; i < listView1.Items.Count; i++)
{
ListViewItem item = listView1.Items[i];
for (int j = 0; j < item.SubItems.Count; j++)
{
s =s+item.SubItems[j].Text;
textBox1.Text = s;
}
}
这种方法理论上可行,但是由于listView1.Items[i]是一个对象object,故往往需要这样:
ListViewItem item = listView1.Items[i] as ListViewItem;
但是我把object转为ListViewItem的过程中,就不成功,还不知道问题出现在哪。如下 :
不成功的原因,我觉得应该是在object转listView这步骤。
程序执行到第180行时,Items由object类型变成PatientInfoProperty类型,而PatientInfoProperty类型是不能赋值给listView。
程序执行到第180行时,Items由object类型变成PatientInfoProperty类型,而PatientInfoProperty类型是不能赋值给listView。
程序执行到第180行时,Items由object类型变成PatientInfoProperty类型,而PatientInfoProperty类型是不能赋值给listView。
你可以参考论坛 https://bbs.csdn.net/topics/390955753,这论坛提到了从 listView1.Items拷贝到 listView2.Items的方法。
方法二,根据listView.item的具体属性而拷贝。
方法二、建立具体属性的集合
我注意到了m_cGlobal.m_cMWindow.m_cHome.lvPatientList.Items是一个多行多列的集合,即 List<PatientInfoProperty> 。于是
我建立了这样的集合,把lvPatientList.Items拷贝出来:
List<PatientInfoProperty> item = new List<PatientInfoProperty>();
item = m_cGlobal.m_cMWindow.m_cHome.lvPatientList.ItemsSource as List<PatientInfoProperty>;//找出集合的每一行
所以,我只需操作item即可。然后就可以找出集合的每行的属性了
最后注意lvPatientList.ItemsSource之前使用ObservableCollection<PatientInfoProperty>赋值的,所以你必须建立一个ObservableCollection<PatientInfoProperty> 集合,即:
ObservableCollection<PatientInfoProperty> item = new ObservableCollection<PatientInfoProperty>();
好了,没问题了。可以用了。