ListView虛擬模式的使用

2021-06-17 14:16:01 字數 3641 閱讀 8824

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.windows.forms;

using system.data;

////// 重置listview集合

//////

public void reset(ilistl)

this.virtuallistsize = this.currentcacheitemssource.count;

}////// 虛擬模式事件

//////

///private void listview_retrievevirtualitem(object sender, retrievevirtualitemeventargs e)

listviewitem lv = this.currentcacheitemssource[e.itemindex];

e.item = lv;

}////// 獲取選中的第一行的指定tag值

//////

///public string firstselectitemvalue(string key)

////// 獲取列名的索引

//////

///public int getcolumnsindex(string key)

}return i;

}////// 獲取選中項

//////

public listgetselectitem()

return l;

}////// 獲取選中行的某列集合

//////

///public listgetlistviewfield(string key)

return ids;

}private listviewitemcomparer mysorter;

////// 排序

//////

protected override void oncolumnclick(columnclickeventargs e)

else

else

}else

this.mysorter.dbtype = dbtype;

this.currentcacheitemssource.sort(this.mysorter);

this.invalidate();}}

#endregion

#region 普通模式下排序

/*普通模式下排序

public void reloadcolumn()

protected override void oncolumnclick(columnclickeventargs e)

else

else

}else

comparer.dbtype = dbtype;

//僅僅改變了listviewitemsorter屬性值,這裡不會自動呼叫sort()方法,需要顯式指定執行sort()方法實現排序。

this.sort();}}

*/#endregion

#region listview排序邏輯

////// listview排序邏輯

///private class listviewitemcomparer : system.collections.generic.icomparer

public listviewitemcomparer(int column)

: this()

//////

//////哪列

///排序方式

///型別

public listviewitemcomparer(int column, sortorder sortorder, string dbtype)

: this(column)

#region icomparer 成員

public int compare(listviewitem x, listviewitem y)

catch (exception ex)

switch (dbtype)

else

break;

case "double":

double d1 = fn.isdouble(c1, 0);

double d2 = fn.isdouble(c2, 0);

if (d1 == d2)

result = 0;

else if (d1 < d2)

result = -1;

else

result = 1;

break;

default:

result = string.compare(c1, c2);

break;

}if (this.order == sortorder.ascending)

else if (this.order == sortorder.descending)

else

}#endregion

////// 當前排序列

///public int sortcolumn

////// 當前列排序方式

///public sortorder order

}#endregion

public void fill_lv(dataset ds)

listlstitem = new list();

foreach (datarow dr in table.rows)

listviewitem lst1 = new listviewitem(str, 0);

= convert.toint32(dr["ste"]);

lstitem.add(lst1);

}addlvrow(lstitem);

}this.autoresizecolumns(columnheaderautoresizestyle.headersize);

this.columns[this.columns.count - 1].width -= 50;

}protected void addlvcol(string pname, string ptag, string ptext, int pwidth)

protected void addlvrow(listlvitem)

}public static class fn

catch (system.exception ex)

}public static double isdouble(object obj1, double d1)

catch (system.exception ex)

}public static datetime isdate(object obj1, datetime dattim1)

catch (system.exception ex)}}

}

使用方法:

public partial class form1 : form

private void form1_load(object sender, eventargs e)

}

ListView虛擬模式封裝

1 public class listviewah listviewex210 11public listviewah 1217 18 19 重置listview集合 20 21 22public void reset ilistitems 2334 35 this.virtuallistsize ...

ListView的使用方式

listview是安卓裡最難用的控制項之一 在安卓裡建立listview的方式有兩種 1.在layout布局檔案中定義listview控制項2.直接讓activity繼承listactivity 首先先採用繼承listactivity 1.建立乙個arrayadatertest 2.在activit...

ListView控制項使用

在.h中 clistctrl m listctrl 在.cpp中 新增listctrl標題 m listctrl.insertcolumn 0,t 標題 lvcfmt center 第一欄設定center屬性不能成功 m listctrl.setcolumnwidth 0,200 m listctr...