Der folgende Editor zeigt Ihnen ein Beispiel für die C#-Listenansicht, indem Sie auf die Spaltenüberschrift klicken. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Herausgeber und werfen wir einen Blick darauf
Die Beispiele sind wie folgt:
#region 自定义变量 int currentCol = -1; bool sort; #endregion//列头点击事件 private void lvw_ColumnClick(object sender, ColumnClickEventArgs e) { string Asc = ((char)0x25bc).ToString().PadLeft(4, ' '); string Des = ((char)0x25b2).ToString().PadLeft(4, ' '); if (sort == false) { sort = true; string oldStr = this.lvw.Columns[e.Column].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' '); this.lvw.Columns[e.Column].Text = oldStr + Des; } else if (sort == true) { sort = false; string oldStr = this.lvw.Columns[e.Column].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' '); this.lvw.Columns[e.Column].Text = oldStr + Asc; } if(lvw.Columns[e.Column].Tag.ToString()=="n")//在设计器中把列头的tag设为"n",则表示该列按数字比较器处理,否则为文本 lvw.ListViewItemSorter = new ListViewItemComparerNum(e.Column, sort); else lvw.ListViewItemSorter = new ListViewItemComparer(e.Column, sort); this.lvw.Sort(); int rowCount = this.lvw.Items.Count; if (currentCol != -1) { if (e.Column != currentCol) this.lvw.Columns[currentCol].Text = this.lvw.Columns[currentCol].Text.TrimEnd((char)0x25bc, (char)0x25b2, ' '); } currentCol = e.Column; }//文本比较器public class ListViewItemComparer : IComparer { public bool sort_b; public SortOrder order = SortOrder.Ascending; private int col; public ListViewItemComparer() { col = 0; } public ListViewItemComparer(int column, bool sort) { col = column; sort_b = sort; } public int Compare(object x, object y) { if (sort_b) { 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); } } } //数字比较器 public class ListViewItemComparerNum : IComparer { public bool sort_b; public SortOrder order = SortOrder.Ascending; private int col; public ListViewItemComparerNum() { col = 0; } public ListViewItemComparerNum(int column, bool sort) { col = column; sort_b = sort; } public int Compare(object x, object y) { decimal d1=Convert.ToDecimal(((ListViewItem)x).SubItems[col].Text); decimal d2=Convert.ToDecimal(((ListViewItem)y).SubItems[col].Text); if (sort_b) { return decimal.Compare(d1,d2); } else { return decimal.Compare(d2,d1); } } }
Das obige ist der detaillierte Inhalt vonBeispielcodefreigabe zum Implementieren der C#-Listenansicht-Klick-Spaltenkopfsortierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!