1) 헤더에는 다음을 사용하도록 선언한다.
private int RandomNumber(int min, int max)
using System.Collections;
2) 사용할 곳 네임스페이스 안에 다음과 같은 클래스를 만든다.
private int RandomNumber(int min, int max)
// 리스트뷰의 정렬을 위하여 사용함.
class ListViewItemComparer : IComparer
{
private int col;
public string sort = "asc";
public ListViewItemComparer()
{
col = 0;
}
/// <summary>
/// 컬럼과 정렬 기준(asc, desc)을 사용하여 정렬 함.
/// </summary>
/// <param name="column">몇 번째 컬럼인지를 나타냄.</param>
/// <param name="sort">정렬 방법을 나타냄. Ex) asc, desc</param>
public ListViewItemComparer(int column, string sort)
{
col = column;
this.sort = sort;
}
public int Compare(object x, object y)
{
if (sort == "asc")
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);
}
// 숫자의 정확한 sort를 하기 위해서는
// http://www.codeproject.com/KB/recipes/csnsort.aspx 사용하자.
// using ns; 선언 필요
/*
public int Compare(object x, object y)
{
if (sort == "asc")
return StringLogicalComparer.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
else
return StringLogicalComparer.Compare(((ListViewItem)y).SubItems[col].Text, ((ListViewItem)x).SubItems[col].Text);
}
*/
}
3) 사용할 이벤트가 있는 곳에 다음과 같이 처리한다.
private int RandomNumber(int min, int max)
private void listViewMyCom_ColumnClick(object sender, ColumnClickEventArgs e)
{
// 방향 초기화
for(int i=0; i<lstEvent.Columns.Count; i++)
{
listview.Columns[i].Text = listview.Columns[i].Text.Replace(" △", "");
listview.Columns[i].Text = listview.Columns[i].Text.Replace(" ▽", "");
}
// DESC
if (this.listview.Sorting == SortOrder.Ascending || listview.Sorting == SortOrder.None)
{
this.listview.ListViewItemSorter = new ListViewItemComparer(e.Column, "desc");
listview.Sorting = SortOrder.Descending;
listview.Columns[e.Column].Text = listview.Columns[e.Column].Text + " ▽";
}
// ASC
else
{
this.listview.ListViewItemSorter = new ListViewItemComparer(e.Column, "asc");
listview.Sorting = SortOrder.Ascending;
listview.Columns[e.Column].Text = listview.Columns[e.Column].Text + " △";
}
listview.Sort();
// 컬럼 갯수가 변경되는 구조라면 sorter를 null 처리하여야 함
lstStat.ListViewItemSorter = null;
}


