当ListView
处于虚拟模式时,您有责任在其询问时向ListView
ListItem
提供与索引n
相对应的内容通过OnRetrieveItem
活动。
我根据自己的规则对列表进行排序,并告诉列表视图重新绘制:
listView1.Invalidate();
那很好,花花公子。
除非用户选择了某些项目。现在,当树重新绘制时,会选择不同的项目。
对SelectedIndices
进行排序的技术是什么?
但如果我按自己的个人名单排序
答案 0 :(得分:1)
您需要存储所选对象,按其新索引排序,查找对象并重新选择它们。
代码看起来像这样(根据您的需要优化它):
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 );
}
}