2011-09-28 84 views
2

我需要一個可以包含大量項目(大約700)的組合框,但似乎對組合框包含的項目數有限制(100!)。有沒有辦法可以延長這個限制?Windows窗體中的最大組合框項目

UPDATE:

我真的不能在這裏解釋的範圍,而是一個搜索框是不恰當的。

如果MaxDropDownItems設置爲10有20個項目,它提供了一個滾動條來訪問其他10個,但不清楚如果超過100個項目會發生什麼。

不幸的是,它不像在其中填充100個項目那樣簡單,因爲它基於數據庫填充。不過謝天謝地,我們有一個測試團隊!

我會在適當的時候發佈測試結果。

+1

這個組合框將用於什麼?我認爲用戶瀏覽700個項目有點過分。 – Taryn

+0

我同意,但它是一個要求,該框實際上是一個名爲CheckedComboBox的用戶控件,因此可以選擇任意數量的項目。在大多數情況下,不會有700個,但是需要支持這個 – Jamesbraders

+1

通過用foo值填充comboBox來測試相當簡單:'for(int i = 0; i <= 150; i ++){comboBox .Items.Add(i.ToString()); }' – Otiel

回答

2

ComboBox可以很容易地包含數以千計的項目。您所指的100限制是出現ComboBox下拉菜單時顯示的可見部分。

請注意,性能與ComboBox內正在填充的數據類型有關;一個複雜的對象與簡單的字符串值。項目的虛擬化不像WinForm那樣存在,就像它在WPF/SL中一樣。

3

正如GvS指出的那樣,MaxDropDownItems屬性是顯示下拉部分時可見項目的最大數量。

因此可以顯示700個項目(雖然對您的用戶不太好)。

您可以使用AutoCompleteMode屬性類似下面啓用過濾:

AutoCompleteStringCollection collection = new AutoCompleteStringCollection(); 
for (int i = 0; i < 1000; i++) 
{ 
    string item = string.Format("Item {0}", i.ToString()); 
    collection.Add(item); 
    comboBox1.Items.Add(item); 
} 

comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; 
comboBox1.AutoCompleteCustomSource = collection; 
+0

該屬性只允許最多100個,我需要它接近1000! – Jamesbraders

+0

此屬性與顯示的項目數(在開始滾動之前)有關,它不會設置列表中項目的最大數量。 – GvS

+0

有趣,從未見過AutoCompleteMode屬性,但不支持文本輸入 – Jamesbraders

1

ComboBox的UI並不旨在讓用戶從1000個元素的列表中進行選擇。我個人認爲組合框中的20個項目已經太多了。但是如果你想添加700個項目,沒有技術限制。

如果您選擇使選擇項目更容易的事物,您的用戶將會更開心。 (提示:帶有搜索框的東西)。