我有一个arraylist包含我自己类的对象。我想从数组列表中获取具有indexview的index = selectedindex的对象。
我试过了:
TrackInformation t=(TrackInformation) SongList[listView1.SelectedIndices[0]];
TrackInformation
是我的类,SongList
是类型为TrackInformation
的ArrayList。
listview1不允许选择多个索引,所以我想要SelectedIndices
集合的第一个元素。
我收到ArgumentOutOfRangeException
,并且说'0'的值对'index'无效。
答案 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
}