我在這裏有一個桌面應用程序ListBox
,它將接受超過10,000條記錄(目錄及其子目錄內的文件)。當我將其DataSource
與DataTable
分配的數量大於50,000時,即使它位於BackgroundWorker
的DoWork
以內,也會使UI掛起,因此也掛起了我的ProgressBar
,這表明數據在ListBox
中的分配進度。ListBox數據源指定
我也使用方法here來避免跨線程,同時分配它的DisplayMember
和ValueMember
但仍然掛起。
下面的代碼:
private void bgWorkerForLstBox1_DoWork(object sender, DoWorkEventArgs e)
{
string viewPath = string.Empty;
if (radFullPath.Checked)
viewPath = "fullPath";
else if (radShortPath.Checked)
viewPath = "truncatedPath";
else
viewPath = "fileName";
if (dt1 != null)
if (dt1.Rows.Count > 0)
SetListBox1Props(viewPath, "fullPath");
}
delegate void SetListBox1PropsCallback(string DisplayMember, string ValueMember);
private void SetListBox1Props(string DisplayMember, string ValueMember)
{
if (this.lstBox1.InvokeRequired)
{
SetListBox1PropsCallback d = new SetListBox1PropsCallback(SetListBox1Props);
this.Invoke(d, new object[] { DisplayMember, ValueMember });
}
else
{
this.lstBox1.DataSource = dt1;
this.lstBox1.DisplayMember = DisplayMember;
this.lstBox1.ValueMember = ValueMember;
}
}
你真的想顯示'50,000'記錄,你不能實現分頁嗎? – Habib
這是一個桌面應用程序。如果這會有所幫助,我該如何實現像GridView一樣的分頁? –
你爲什麼要進行listbox控制,綁定這樣大小的數據會減慢應用程序的速度。所以使用分頁概念也使用Gridview/Repeater也在數據庫端實現分頁概念。 您正在使用哪個數據庫? –