그림 ->http://img502.imageshack.us/img502/511/87162943.pngListView에서 항목을 정렬하는 방법은 무엇입니까?
각 항목 (질문, 답변, 유형)에서 Click 이벤트가 알파벳순으로 트리거되면 모든 항목을 어떻게 정렬합니까?
그림 ->http://img502.imageshack.us/img502/511/87162943.pngListView에서 항목을 정렬하는 방법은 무엇입니까?
각 항목 (질문, 답변, 유형)에서 Click 이벤트가 알파벳순으로 트리거되면 모든 항목을 어떻게 정렬합니까?
글쎄, 목록 상자 대신 DataGrid를 사용하면 더 쉽게 만들 수 있습니다. 어쨌든, 직접 구현할 수도 있습니다.
가 ColumnClick 이벤트 구현 :
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
// Determine if clicked column is already the column that is being sorted.
if (e.Column == _lvwItemComparer.SortColumn)
{
// Reverse the current sort direction for this column.
if (_lvwItemComparer.Order == SortOrder.Ascending)
{
_lvwItemComparer.Order = SortOrder.Descending;
}
else
{
_lvwItemComparer.Order = SortOrder.Ascending;
}
}
else
{
// Set the column number that is to be sorted; default to ascending.
_lvwItemComparer.SortColumn = e.Column;
_lvwItemComparer.Order = SortOrder.Ascending;
}
// Perform the sort with these new sort options.
listView1.Sort();
}
이 mathod를 당신이 그것을 복사하여 사용할 수 있으며, 비교하기위한이 클래스를 사용합니다 :
public class ListViewItemComparer : IComparer
{
// Specifies the column to be sorted
private int ColumnToSort;
// Specifies the order in which to sort (i.e. 'Ascending').
private SortOrder OrderOfSort;
// Case insensitive comparer object
private CaseInsensitiveComparer ObjectCompare;
// Class constructor, initializes various elements
public ListViewItemComparer()
{
// Initialize the column to '0'
ColumnToSort = 0;
// Initialize the sort order to 'none'
OrderOfSort = SortOrder.None;
// Initialize the CaseInsensitiveComparer object
ObjectCompare = new CaseInsensitiveComparer();
}
// This method is inherited from the IComparer interface.
// It compares the two objects passed using a case
// insensitive comparison.
//
// x: First object to be compared
// y: Second object to be compared
//
// The result of the comparison. "0" if equal,
// negative if 'x' is less than 'y' and
// positive if 'x' is greater than 'y'
public int Compare(object x, object y)
{
int compareResult;
ListViewItem listviewX, listviewY;
// Cast the objects to be compared to ListViewItem objects
listviewX = (ListViewItem)x;
listviewY = (ListViewItem)y;
// Determine whether the type being compared is a date type.
try
{
// Parse the two objects passed as a parameter as a DateTime.
DateTime firstDate = DateTime.Parse(listviewX.SubItems[ColumnToSort].Text);
DateTime secondDate = DateTime.Parse(listviewY.SubItems[ColumnToSort].Text);
// Compare the two dates.
compareResult = DateTime.Compare(firstDate, secondDate);
}
// If neither compared object has a valid date format,
// perform a Case Insensitive Sort
catch
{
try
{
int num1 = int.Parse(listviewX.SubItems[ColumnToSort].Text);
int num2 = int.Parse(listviewY.SubItems[ColumnToSort].Text);
// Compare the two dates.
compareResult = num1.CompareTo(num2);
}
catch
{
// Case Insensitive Compare
compareResult = ObjectCompare.Compare(
listviewX.SubItems[ColumnToSort].Text,
listviewY.SubItems[ColumnToSort].Text
);
}
}
// Calculate correct return value based on object comparison
if (OrderOfSort == SortOrder.Ascending)
{
// Ascending sort is selected, return normal result of compare operation
return compareResult;
}
else if (OrderOfSort == SortOrder.Descending)
{
// Descending sort is selected, return negative result of compare operation
return (-compareResult);
}
else
{
// Return '0' to indicate they are equal
return 0;
}
}
// Gets or sets the number of the column to which to
// apply the sorting operation (Defaults to '0').
public int SortColumn
{
set
{
ColumnToSort = value;
}
get
{
return ColumnToSort;
}
}
// Gets or sets the order of sorting to apply
// (for example, 'Ascending' or 'Descending').
public SortOrder Order
{
set
{
OrderOfSort = value;
}
get
{
return OrderOfSort;
}
}
}
여기 내가 ListView를 한 번 사용 무언가의 예입니다
this KB article에 설명 된대로 ListViewItemSorter
속성을 할당하십시오.
그 이미지의 ListBox일까요? – Joey
잘못된 실수, ListView –