如何 對 ListView 項排序

2021-04-26 07:53:28 字數 2541 閱讀 6599

.net compact framework 不支援 listview 的 sort 方法,但您仍可以通過 icomparer 介面對項進行排序,並使用 arraylist 的 sort 方法。

下表定義了三個類。

colheader:

此類派生自 columnheader 類,用於向 listview 控制項新增列並對已單擊的列進行排序。它包含指定排序方向的 ascending 屬性:true 表示公升序,false 表示降序。

單擊某列時,將為每個 listitem 建立此類的乙個例項,並將這些例項新增到 arraylist。每個包裝項均包含乙個屬性,其中含有已單擊列的索引。

此類包含 sortcomparer 類。

sortcomparer:

columnclick 事件的事件處理程式按照下面的過程執行排序操作:

注意,arraylist 中的 sort 方法執行的是不穩定的排序,也就是說,如果兩個元素相等,它們的順序可能不會保持不變。相反,穩定排序則會保持相等元素的順序。

// text property for getting the text of an item.

public string text

}// implementation of the icomparer

// inte***ce for sorting arraylist items.

public class sortcomparer : icomparer

string xtext = xitem.sortitem.subitems[xitem.sortcolumn].text;

string ytext = yitem.sortitem.subitems[yitem.sortcolumn].text;

return xtext.compareto(ytext) * (this.ascending ? 1 : -1);}}

}2、將 colheader 類新增到專案中。

// the colheader class is a columnheader object with an

// added property for determining an ascending or descending sort.

// true specifies an ascending order, false specifies a descending order.

public class colheader : columnheader

}3、使用 colheader 類新增列,然後新增 listview 項。

this.listview1.view = view.details;

// add columns using the colheader class. the fourth

// parameter specifies true for an ascending sort order.

listview1.columns.add(new colheader("name", 110, horizontalalignment.left, true));

listview1.columns.add(new colheader("region", 50, horizontalalignment.left, true));

listview1.columns.add(new colheader("sales", 70, horizontalalignment.left, true));

// add the data.

listview1.items.add(new listviewitem(new string ));

listview1.items.add(new listviewitem(new string ));

listview1.items.add(new listviewitem(new string ));

listview1.items.add(new listviewitem(new string ));

listview1.items.add(new listviewitem(new string ));

listview1.items.add(new listviewitem(new string ));

listview1.items.add(new listviewitem(new string ));

listview1.items.add(new listviewitem(new string ));

// connect the listview.columnclick event to the columnclick event handler.

this.listview1.columnclick += new columnclickeventhandler(listview1_columnclick);

4、新增**以執行排序

private void listview1_columnclick(object sender, columnclickeventargs e)

如何對ListView的項進行排序

當您使用資源瀏覽器檢視檔案時,您可以隨心所欲的按名稱 大小 型別及修改日期不同的列對檔案進行大小排序。net提供的listview元件沒有直接提供這種功能,但要實現並不難。listview.sort 方法的功能是 對列表檢視的項進行排序 可當您呼叫它時卻什麼也沒有發生,原因是您沒有為listview...

怎樣對ListView的項進行排序

當您使用資源瀏覽器檢視檔案時,您能夠隨心所欲的按名稱 大小 型別及改動日期不同的列對檔案進行大小排序。net提供的listview元件沒有直接提供這樣的功能,但要實現並不難。listview.sort 方法的功能是 對列表檢視的項進行排序 可當您呼叫它時卻什麼也沒有發生,原因是您沒有為listvie...

怎樣對ListView的項進行排序

當您使用資源瀏覽器檢視檔案時,您能夠隨心所欲的按名稱 大小 型別及改動日期不同的列對檔案進行大小排序。net提供的listview元件沒有直接提供這樣的功能,但要實現並不難。listview.sort 方法的功能是 對列表檢視的項進行排序 可當您呼叫它時卻什麼也沒有發生,原因是您沒有為listvie...