您的位置:首页 > 其它

解决ListView1的界面数据与内存不一致问题,将内存数据更新到界面上

2013-03-04 21:01 281 查看
目的:解决内存中的数据与界面上不一致,可以将内存中的正确数据更新到界面上(可以进一步实现在线用户排名靠前等相关功能)
调用方式:
ListView1.ListViewItemSorter=newListViewColumnSorter();
publicclassListViewColumnSorter:System.Collections.IComparer
{
privateintColumnToSort;//指定按照哪个列排序
privateSystem.Windows.Forms.SortOrderOrderOfSort;//指定排序的方式
privateSystem.Collections.CaseInsensitiveComparerObjectCompare;//声明CaseInsensitiveComparer类对象,
publicListViewColumnSorter()//构造函数
{
ColumnToSort=0;//默认按第一列排序
OrderOfSort=System.Windows.Forms.SortOrder.None;//排序方式为不排序
ObjectCompare=newSystem.Collections.CaseInsensitiveComparer();//初始化CaseInsensitiveComparer类对象
}
//重写IComparer接口.
//<returns>比较的结果.如果相等返回0,如果x大于y返回1,如果x小于y返回-1</returns>
publicintCompare(objectx,objecty)
{
intcompareResult;
ListViewItemlistviewX,listviewY;
//将比较对象转换为ListViewItem对象
listviewX=(ListViewItem)x;
listviewY=(ListViewItem)y;
//比较
compareResult=ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text,listviewY.SubItems[ColumnToSort].Text);
//根据上面的比较结果返回正确的比较结果
if(OrderOfSort==System.Windows.Forms.SortOrder.Ascending)
{//因为是正序排序,所以直接返回结果
returncompareResult;
}
elseif(OrderOfSort==System.Windows.Forms.SortOrder.Descending)
{//如果是反序排序,所以要取负值再返回
return(-compareResult);
}
else
{
//如果相等返回0
return0;
}
}
///获取或设置按照哪一列排序.
publicintSortColumn
{
set
{
ColumnToSort=value;
}
get
{
returnColumnToSort;
}
}
///获取或设置排序方式.
publicSystem.Windows.Forms.SortOrderOrder
{
set
{
OrderOfSort=value;
}
get
{
returnOrderOfSort;
}
}
}


关于listview1的列表更新,如果要做到无刷新更新,不能使用listview1.Items.Clear();或listview1.Clear();

而是应该一个个判断,哪些需要更新或者替换,如果是要替换的项,则可以remove一个,然后insert一个

总体上看不出来频繁刷新;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐