- ベストアンサー
ArrayListのソートについて
- プログラム上でListViewのカラムをクリックするとソートされる。リストはソートされるのに中身(ArrayList)がソートされていないため、ソート後のアイテムをクリックしても違う値しか出てこない。
- ArrayListのソートが必要だが、比較ができないエラーが出てソートできない。
- ListViewのカラムソートと連動してArrayListのソートができるようにするにはどうすればいいか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
subject + addressが一意で無い場合 ArrayListのIndexを ListViewItemのTagプロパティに登録してみましょう // ListViewを設定する int i = 0; foreach (Mail mail in list) { ListViewItem item = new ListViewItem(mail.subject); item.SubItems.Add(mail.address); // この2行を追加 item.tag = i; i++; listView1.Items.Add(item); } といった具合にします 選択されたアイテムの選定には ListViewItem item = listView1.SelectedItem[0]; Mail mail = list[(int)item.Tag]; といった具合で選択できると思います
その他の回答 (1)
- redfox63
- ベストアンサー率71% (1325/1856)
Clickした際にcollectionMailから探すロジックを提示してみましょう ListViewItem item; if (listView1.SelectedItems.Count > 0 ) { item = listView1.SelectedItems[0]; ArrayList list = (listView1.Columns[1].Text == "差出人") ? collectionMail[RECEIVE] : collectionMail[DELETE]; boolean bflag = false; foreach( Mail mail in list ) { if ( mail.subject == item.Text && mail.address == item.SubItems[1].Text ) { bflag = true; MessageBox.Show( mail.subject + "\n" + mail.body ); break; } } if ( !bflag ) { MessageBox.Show("アイテムが見つかりません"); } } といった具合で探せると思いますが ...