如题!
这个比较麻烦
得自己画
排序,
http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/dnwinforms.mspx
int preColNO=-1; //用于listView 显示颜色的上一行行号;
private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e) //点击排序ListView
{
#region 字符串加上小三角,TrimEnd的用法测试
string Asc=((char)0x25bc).ToString().PadLeft(4, );
string Des=((char)0x25b2).ToString().PadLeft(4, );
#endregion
if (sort==false)
{
sort=true;
string oldStr=this.listView1.Columns[e.Column].Text.TrimEnd((char)0x25bc,(char)0x25b2, );
this.listView1.Columns[e.Column].Text=oldStr+Des;
}
else if(sort==true)
{
sort=false;
string oldStr=this.listView1.Columns[e.Column].Text.TrimEnd((char)0x25bc,(char)0x25b2, );
this.listView1.Columns[e.Column].Text=oldStr+Asc;
}
listView1.ListViewItemSorter=new ListViewItemComparer(e.Column,sort);
this.listView1.Sort();
int rowCount=this.listView1.Items.Count;
if (preColNO!=-1) //去除颜色
{
for (int i=0;i<rowCount;i++)
{
this.listView1.Items[i].UseItemStyleForSubItems=false;
this.listView1.Items[i].SubItems[preColNO].BackColor=Color.White;
//如果列未变
if (e.Column!=preColNO)
this.listView1.Columns[preColNO].Text=this.listView1.Columns[preColNO].Text.TrimEnd((char)0x25bc,(char)0x25b2, );
}
}
for (int i=0;i<rowCount;i++)
{
this.listView1.Items[i].UseItemStyleForSubItems=false;
this.listView1.Items[i].SubItems[e.Column].BackColor=Color.WhiteSmoke;
preColNO=e.Column;
}
public class ListViewItemComparer : IComparer
{
public bool sort1;
public SortOrder Order=SortOrder.Ascending;
private int col;
public ListViewItemComparer()
{
col=0;
}
public ListViewItemComparer(int column,bool sort)
{
col=column;
sort1=sort;
}
public int Compare(object x, object y)
{
if (sort1)
{
return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
}
else
{
return String.Compare(((ListViewItem)y).SubItems[col].Text, ((ListViewItem)x).SubItems[col].Text);
}
}
}
}