4

ListView で現在選択されている項目を削除するメソッドがあります

listView1.Items.Remove(listView1.SelectedItems[0]);

選択したものを削除した後、ListView で次のものを選択するにはどうすればよいですか?

私は次のようなものを試しました

var index = listView1.SelectedItems[0].Index;
listView1.Items.Remove(listView1.SelectedItems[0]);
listView1.SelectedItems[0].Index = index;

しかし、私はエラーが発生します

Property or indexer 'System.Windows.Forms.ListViewItem.Index' cannot be 
assigned to -- it is read only

ありがとうございました。

4

6 に答える 6

2

上記の以前の回答にコードをもう 1 行追加する必要がありました。さらに、カウントを超えていないことを確認するためのチェックも必要でした。

int selectedIndex = listview.SelectedIndices[0];
selectedIndex++;
// Prevents exception on the last element:      
if (selectedIndex < listview.Items.Count)
{
  listview.Items[selectedIndex].Selected = true;
  listview.Items[selectedIndex].Focused = true;
}
于 2014-11-11T20:28:33.247 に答える
1

ListViewSelectedIndexプロパティを持っていません。プロパティがありSelectedIndicesます。

コントロール内の選択された項目のインデックスを取得します。

ListView.SelectedIndexCollection indexes = this.ListView1.SelectedIndices;

foreach ( int i in indexes )
{
 //
}
于 2013-03-21T14:18:06.880 に答える
0

listView1.SelectedIndices プロパティを使用してみてください

于 2013-03-21T14:13:02.953 に答える
0

アイテムを削除すると、「次の」アイテムのインデックスは、削除したアイテムと同じインデックスになります。だから、私はあなたが持っていることを確認しlistview1.IsSynchroniseDwithCurrentItemTrue = trueます

var index = listView1.SelectedItems[0].Index;
listView1.Items.Remove(listView1.SelectedItems[0]);
CollectionViewSource.GetDefaultView(listview).MoveCurrentTo(index);
于 2013-03-21T14:25:26.983 に答える
0

私は次の方法でこれを行いました:

int selectedIndex = listview.SelectedIndices[0];
selectedIndex++;
listview.Items[selectedIndex].Selected = true;
于 2013-04-25T10:58:01.193 に答える