1

自分のクラスのオブジェクトを含む配列リストがあります。listview の index = selectedindex を持つ配列リストからオブジェクトをフェッチしたい。

私はこれを試しました:

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

TrackInformationは私のクラスでありSongList、タイプの ArrayList ですTrackInformation

listview1 では複数のインデックスを選択できないため、SelectedIndicesコレクションの最初の要素が必要です。

私は取得ArgumentOutOfRangeExceptionしていますが、「0」の値は「インデックス」には無効です。

4

3 に答える 3

3

Put this line before your code -

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

ListView.SelectedIndexChanged イベントには、コードを爆撃する癖があります。プログラムを起動すると、項目は選択されていません。アイテムをクリックすると SelectedIndexChanged が起動しますが、問題ありません。ここで別の項目をクリックすると、イベントが2 回発生します。最初に、役に立たないことに、最初の項目が選択されていないことを知らせます。次に、新しいアイテムが選択されたことをもう一度伝えます。その最初のイベントにより、空の配列 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 に答える