選択したオブジェクトを保存し、並べ替え、新しいインデックスでオブジェクトを見つけて、再選択する必要があります。
コードは次のようになります (必要に応じて最適化してください)。
void listView1_ColumnClick( object sender, ColumnClickEventArgs args )
{
// Store the selected objects
List<MyDataObject> selectedObjects = new List<MyDataObject>();
foreach ( int index in listView1.SelectedIndices )
{
selectedObjects.Add( m_MyDataObjectsColl[index] );
}
// Clear all selected indices
listView1.SelectedIndices.Clear();
// Sort the list
SortListView(listView1, args);
// Reselect the objects according to their new indices
foreach ( MyDataObject selectedObject in selectedObjects )
{
int index = m_MyDataObjectsColl.FindIndex(
delegate( MyDataObject obj ) { return obj == selectedObject; }
);
listView1.SelectedIndices.Add( index );
}
}