1

我有一个数组列表,其中包含我自己的类的对象。我想从列表视图的 index = selectedindex 的数组列表中获取对象。

我试过这个:

TrackInformation t=(TrackInformation) SongList[listView1.SelectedIndices[0]];

TrackInformation是我的班级,SongList是一个 ArrayList 类型TrackInformation

listview1 不允许选择多个索引,所以我想要SelectedIndices集合的第一个元素。

我得到ArgumentOutOfRangeException它说“0”的值对“索引”无效。

4

3 回答 3

3

将此行放在您的代码之前 -

if(listView1.SelectedIndices.Count > 0)
{
   TrackInformation t=(TrackInformation) SongList[listView1.SelectedIndices[0]];
}
于 2012-08-12T14:30:54.090 回答
2

ListView.SelectedIndexChanged 事件有一个会炸毁您的代码的怪癖。当您启动程序时,不会选择任何项目。单击一个项目并 SelectedIndexChanged 触发,没问题。现在单击另一个项目,事件会触发两次。首先让你知道,第一项是unselected。然后再次告诉你新项目被选中。第一个事件会让你索引一个空数组,kaboom。RV1987 的代码片段阻止了这一点。

于 2012-08-12T15:31:10.990 回答
1

错误是因为 listView1.SelectedIndices 为空,您是否选择了一行?

您可能想要进行测试

ListView.SelectedIndexCollection selected=listView1.SelectedIndicies;

if (selected.Count==0) {
 // code for no items selected
} else {
  TrackInformation t=(TrackInformation) SongList[selected[0]]; 
  // rest of code to deal with t
}
于 2012-08-12T14:25:08.910 回答