ArrayList[] arraylistPath = new ArrayList[3];
arraylistPath = null; for (int i = 0; i < this.listView_Detail.Items.Count; i++)
{
arraylistPath[0].Add(this.listView_Detail.Items[i].SubItems[0].Text); --->从这出错
arraylistPath[1].Add(this.listView_Detail.Items[i].SubItems[1].Text);
arraylistPath[2].Add(this.listView_Detail.Items[i].SubItems[2].Text);
}
请教原因,如果有的解决方法更好,我想把ListView中的值存在一个动态数组中。
arraylistPath = null; for (int i = 0; i < this.listView_Detail.Items.Count; i++)
{
arraylistPath[0].Add(this.listView_Detail.Items[i].SubItems[0].Text); --->从这出错
arraylistPath[1].Add(this.listView_Detail.Items[i].SubItems[1].Text);
arraylistPath[2].Add(this.listView_Detail.Items[i].SubItems[2].Text);
}
请教原因,如果有的解决方法更好,我想把ListView中的值存在一个动态数组中。
{
arraylistPath.Add(this.listView_Detail.Items[i].SubItems[0].Text);
arraylistPath.Add(this.listView_Detail.Items[i].SubItems[1].Text);
arraylistPath.Add(this.listView_Detail.Items[i].SubItems[2].Text);
}
==
这句不要,上面才分配过空间
arraylistPath = null; //将它设为空,在内存中没有对应的空间
所以将arraylistPath = null;删除应该就可以了
ArrayList arraylistPath = new ArrayList;
for (int i = 0; i < this.listView_Detail.Items.Count; i++)
{
arraylistPath.Add(this.listView_Detail.Items[i].SubItems[0].Text);
arraylistPath.Add(this.listView_Detail.Items[i].SubItems[1].Text);
arraylistPath.Add(this.listView_Detail.Items[i].SubItems[2].Text);
}
读取:
arraylistPath[0].ToString
arraylistPath[1].ToString
arraylistPath[2].ToString
ArrayList[] arraylistPath = new ArrayList[3];
for (int i = 0; i < this.listView_Detail.Items.Count; i++)
{
arraylistPath[0].Add(this.listView_Detail.Items[i].SubItems[0].Text);
arraylistPath[1].Add(this.listView_Detail.Items[i].SubItems[1].Text);
arraylistPath[2].Add(this.listView_Detail.Items[i].SubItems[2].Text);
} 这样不已经存在3个数组里了么
试一下吧,
出错后,先中断,在命令面板里依次看一下
this.listView_Detail
this.listView_Detail.Items[0]
this.listView_Detail.Items[0].SubItems[0]
是不是null值
如果问题出在这里你应该能很快找到原因
不要那个=NULL了
上面已经分配了3个空间了!
//arraylistPath = null; <--不要这句了,你一用这句,那 new ArrayList[3] 就等于没写了 for (int i = 0; i < this.listView_Detail.Items.Count; i++)
{
string[] TempStr = new string[3];
TempStr[0] = this.listView_Detail.Items[i].SubItems[0].Text;
TempStr[1] = this.listView_Detail.Items[i].SubItems[1].Text;
TempStr[2] = this.listView_Detail.Items[i].SubItems[2].Text;
arraylistPath.Add(TempStr);
}
//下面是提取数据
for (int i = 0; i < this.listView_Detail.Items.Count; i++)
{
for (int j = 0; j < 3; j++)
{
Response.Write(((string[])arraylistPath[i])[j]);
}
}
arraylistPath = null; // 这个错误大家已经说了 。 for (int i = 0; i < this.listView_Detail.Items.Count; i++)
{
arraylistPath[0].Add(this.listView_Detail.Items[i].SubItems[0].Text); --->从这出错
arraylistPath[1].Add(this.listView_Detail.Items[i].SubItems[1].Text);
arraylistPath[2].Add(this.listView_Detail.Items[i].SubItems[2].Text);
} 你这个流程有问题啊,即使编译通过,可能给你带来逻辑错误,
arrayListPath 中始终保存的是 this.listView_Detail 的最后一个Item 的值,即:
this.listView_Detail.Items[this.listView_Detail.Items.Count - 1];