列表视图中选定索引的问题

时间:2012-08-12 14:19:09

标签: c# winforms listview arraylist

我有一个arraylist包含我自己类的对象。我想从数组列表中获取具有indexview的index = selectedindex的对象。

我试过了:

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

TrackInformation是我的类,SongList是类型为TrackInformation的ArrayList。

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

我收到ArgumentOutOfRangeException,并且说'0'的值对'index'无效。

3 个答案:

答案 0 :(得分:3)

将此行放在代码之前 -

if(listView1.SelectedIndices.Count > 0)
{
   TrackInformation t=(TrackInformation) SongList[listView1.SelectedIndices[0]];
}

答案 1 :(得分:2)

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

答案 2 :(得分: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
}