110,567
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, System.EventArgs e)
{
for (int i = 0; i <= 10; i++)
{
ListViewItem item = new ListViewItem("Item" + i.ToString());
item.SubItems.Add("TestItem");
this.listView1.Items.Add(item);
}
}
private void ListView_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
{
this .listView1 .ListViewItemSorter = new ListViewItemComparer(e.Column);
this.listView1.Sort();
}
public class ListViewItemComparer : System.Collections.IComparer
{
private int col;
public bool bAscending = true ; //用于设置升序或降序
public ListViewItemComparer()
{
col = 0;
}
public ListViewItemComparer(int column)
{
col = column;
}
public int Compare(object x, object y)
{
if (bAscending )
return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
else
return -1 * String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
}
}
}
}
private void ListView_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
{
ListView.ListViewItemSorter = new ListViewItemComparer(e.Column);
ListView.Sort();
}
class ListViewItemComparer : IComparer
{
private int col;
public ListViewItemComparer()
{
col = 0;
}
public ListViewItemComparer(int column)
{
col = column;
}
public int IComparer.Compare(object x, object y)
{
return String.Compare(((ListViewItem)x).SubItems(col).Text, ((ListViewItem)y).SubItems(col).Text);
}
}
Private Sub ListView_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView.ColumnClick
ListView.ListViewItemSorter = New ListViewItemComparer(e.Column)
ListView.Sort()
End Sub
Class ListViewItemComparer
Implements IComparer
Private col As Integer
Public Sub New()
col = 0
End Sub
Public Sub New(ByVal column As Integer)
col = column
End Sub
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
Return [String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
End Function
End Class
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication2
{
public partial class Form1 : Form
{
private SortOrder sort = SortOrder.Ascending;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, System.EventArgs e)
{
ListView ListView1 = new ListView();
ListView1.ColumnClick += ListView_ColumnClick;
ListView1.View = View.Details;
ListView1.Dock = DockStyle.Fill;
ListView1.Columns.Add("Column1");
ListView1.Columns.Add("Column2");
for (int i = 0; i <= 100; i++)
{
ListViewItem item = new ListViewItem("Item"+i.ToString ());
item.SubItems.Add("TestItem" + i.ToString());
ListView1.Items.Add(item);
}
this.Controls.Add(ListView1);
}
private void ListView_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
{
if (sort == SortOrder.Ascending)
{
((ListView)sender).ListViewItemSorter = new ListViewItemComparer(e.Column, SortOrder.Ascending);
sort = SortOrder.Descending;
}
else
{
((ListView)sender).ListViewItemSorter = new ListViewItemComparer(e.Column, SortOrder.Descending);
sort = SortOrder.Ascending;
}
((ListView)sender).Sort();
}
public class ListViewItemComparer : System.Collections.IComparer
{
private int col;
public SortOrder sortOrder = SortOrder.Ascending;
public ListViewItemComparer()
{
col = 0;
}
public ListViewItemComparer(int column, SortOrder sort)
{
col = column;
sortOrder = sort;
}
public int Compare(object x, object y)
{
if (sortOrder == System.Windows.Forms.SortOrder.Ascending)
{
return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
}
else if (sortOrder == System.Windows.Forms.SortOrder.Descending)
{
return -1 * String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
}
else
{
return 0;
}
}
}
}
}
Public Class Form1
Private sort As SortOrder = SortOrder.Ascending
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ListView1 As New ListView
AddHandler ListView1.ColumnClick, AddressOf ListView_ColumnClick
ListView1.View = View.Details
ListView1.Dock = DockStyle.Fill
ListView1.Columns.Add("Column1")
ListView1.Columns.Add("Column2")
Dim rnd As New Random
For i As Integer = 0 To 100
Dim item As New ListViewItem(rnd.Next.ToString)
item.SubItems.Add("TestItem" + i.ToString)
ListView1.Items.Add(item)
Next
Me.Controls.Add(ListView1)
End Sub
Private Sub ListView_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs)
If sort = SortOrder.Ascending Then
CType(sender, ListView).ListViewItemSorter = New ListViewItemComparer(e.Column, SortOrder.Ascending)
sort = SortOrder.Descending
Else
CType(sender, ListView).ListViewItemSorter = New ListViewItemComparer(e.Column, SortOrder.Descending)
sort = SortOrder.Ascending
End If
CType(sender, ListView).Sort()
End Sub
Class ListViewItemComparer
Implements IComparer
Private col As Integer
Public sortOrder As SortOrder = SortOrder.Ascending
Public Sub New()
col = 0
End Sub
Public Sub New(ByVal column As Integer, ByVal sort As SortOrder)
col = column
sortOrder = sort
End Sub
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
If sortOrder = Windows.Forms.SortOrder.Ascending Then
Return [String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
ElseIf sortOrder = Windows.Forms.SortOrder.Descending Then
Return -1 * [String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y, ListViewItem).SubItems(col).Text)
Else
Return 0
End If
End Function
End Class
End Class