2011-07-11 40 views
0

我的Access數據庫中有超過9,00,000條記錄,但只有一小部分顯示在列表框中。列表框可以有多少行? 65K左右是我從研究中得到的答案。 謝謝!列表框可以有多少行? Windows窗體應用程序

+2

用戶應該怎樣處理* any * UI元素中的900k條目? –

+0

也許你應該重新考慮你的界面。在一個屏幕上向用戶顯示900k記錄是壓倒性的,可能是無用的。考慮將你將顯示的內容縮小到少於100個的更有用的東西。 – Bueller

+0

@ Alex K. @ Bueller - 我知道這沒有意義。但它是需要的時間:) – user823911

回答

1

我不確定什麼是確切的限制(下面提供的URL提供了一些建議)我認爲你想要填充列表框的項目的數量可能會減慢你的計算機很多,如果它填充了許多記錄。

也許你應該考慮使用一個不同的控件,它允許像DataGrid或其他類似的分頁來同時顯示100個結果?

此鏈接可能對你有用:http://codeguru.earthweb.com/forum/showthread.php?p=1715288

與呼叫建立數據網格:http://support.microsoft.com/kb/305271

+0

如果我使用datagrid有一種方法可以將選定的項目移動到不同的textarea或listbox? – user823911

+0

您可以添加代碼以突出顯示要選擇的行(或者使用列中的複選框並選中要移動的項目),然後單擊一個按鈕,該按鈕將執行一個foreach循環選定項目並將其添加到另一個項目控制項目源。此鏈接可能有助於突出顯示數據網格中的行http://support.microsoft.com/kb/195472 – Theomax

+0

謝謝@aspdotnetuser – user823911

2

則存在於Vista的推出時間和仍然存在在Win7本機列表框控件中的錯誤。它可以防止您正確滾動65536 +以上的可見項目。除了看不到後面的項目之外,該錯誤最明顯的部分是當您將其拖動到底部時,滾動條拇指跳回。

這個錯誤不會經常進行測試。沒有人希望他的用戶有足夠的耐心去抓取數以萬計的物品。這樣的程序很快就會被卸載。否則,ListBox容量僅受可用虛擬內存量的限制。如果你真的想追求這個,然後使用ListView或DataGridView。

+0

如果您選擇使用WF listview http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.virtualmode.aspx –

0

我發現最好在WinForms上使用ListBox中的DataGridView。關鍵是使用VirtualMode。我從DataGridView派生類似於:

 
class CustomDgv : DataGridView { 
    public CustomDgv() { 
     this.BackgroundColor = SystemColors.Window; 
     this.BorderStyle = BorderStyle.None; 
     this.Dock = DockStyle.Fill; 
     this.MultiSelect = false; 
     this.AutoGenerateColumns = false; 
     this.RowHeadersVisible = this.AllowUserToResizeRows = false; 

     this.ReadOnly = true; 
     this.AllowUserToAddRows = this.AllowUserToDeleteRows = false; 
     this.CellBorderStyle = DataGridViewCellBorderStyle.None; 

     this.VirtualMode = true; 
     this.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 

     this.RowTemplate.Height = this.FontHeight + this.FontHeight/2; 
    } 
} 

然後相應地實現虛擬部分。

相關問題