using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using System.Collections; namespace OnlineMarketingTool.PlayManagement ... { public partial class MyList : System.Windows.Forms.ListView ...{ //加入排序类 private mySorter sorter; public MyList() ...{ sorter = new mySorter(); this.ListViewItemSorter = sorter; sorter.SortOrder = SortOrder.Ascending; InitializeComponent(); this.HideSelection = false; } private void MyList_ColumnClick(object sender, ColumnClickEventArgs e) ...{ if (e.Column == this.sorter.SortColumn) ...{ if (this.sorter.SortOrder == SortOrder.Ascending) this.sorter.SortOrder = SortOrder.Descending; else if (this.sorter.SortOrder == SortOrder.Descending) this.sorter.SortOrder = SortOrder.Ascending; else this.sorter.SortOrder = SortOrder.Ascending; } else ...{ this.sorter.SortColumn = e.Column; } this.Sort(); } }} // ------------------------------------------------------- namespace OnlineMarketingTool.PlayManagement ... { partial class MyList ...{ /**//// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.IContainer components = null; /**//// <summary> /// 清理所有正在使用的资源。 /// </summary> /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> protected override void Dispose(bool disposing) ...{ if (disposing && (components != null)) ...{ components.Dispose(); } base.Dispose(disposing); } 组件设计器生成的代码#region 组件设计器生成的代码 /**//// <summary> /// 设计器支持所需的方法 - 不要 /// 使用代码编辑器修改此方法的内容。 /// </summary> private void InitializeComponent() ...{ components = new System.ComponentModel.Container(); this.ColumnClick +=new System.Windows.Forms.ColumnClickEventHandler(MyList_ColumnClick); } #endregion }} // --------------------------------- using System; using System.Collections.Generic; using System.Text; using System.Collections; using System.Windows.Forms; namespace OnlineMarketingTool.PlayManagement ... { public class mySorter : IComparer ...{ private Comparer comparer; private int sortColumn; private SortOrder sortOrder; public mySorter() ...{ sortColumn = 0; sortOrder = SortOrder.None; comparer = Comparer.Default; } //指定进行排序的列 public int SortColumn ...{ get ...{ return sortColumn; } set ...{ sortColumn = value; } } //指定按升序或降序进行排序 public SortOrder SortOrder ...{ get ...{ return sortOrder; } set ...{ sortOrder = value; } } public int Compare(object x, object y) ...{ int CompareResult; ListViewItem itemX = (ListViewItem)x; ListViewItem itemY = (ListViewItem)y; //在这里您可以提供自定义的排序 CompareResult = comparer.Compare(itemX.SubItems[this.sortColumn].Text, itemY.SubItems[this.sortColumn].Text); if (this.SortOrder == SortOrder.Ascending) return CompareResult; else if (this.SortOrder == SortOrder.Descending) return (-CompareResult); else return 0; } }}