我正在寫一個過濾器來挑選物品。我有一個對象列表。這些對象包含一個數字,名稱和一些其他不相關的項目。目前,該清單包含200個項目。當輸入textbox
時,我正在查看字符串是否與列表中對象的數字/名稱的一部分相匹配。如果是這樣,請將它們添加到listbox
。下面是我的文本框TextChanged事件代碼:有沒有一種方法可以提高我簡單的textfilter的性能?
private void txtTelnumber_TextChanged(object sender, TextChangedEventArgs e)
{
lstOverview.Items.Clear();
string data = "";
foreach (ucTelListItem telList in _allUsers)
{
data = telList.User.H323 + telList.user.E164;
if (data.Contains(txtTelnumber.Text))
lstOverview.Items.Add(telList);
}
}
我有時會看到一點點延遲輸入一個字符時,尤其是當我去從4條到200條記錄(所以當我有一個過濾器,匹配4條記錄,並我退格,整個列表再次出現)。 我的列表是usercontrols的列表,因爲我發現從列表中加載usercontrols所花費的時間較少,然後每次都必須初始化一個新的usercontrol。
我可以對代碼做些什麼嗎?或者只是添加usercontrol
listbox
導致的小延遲(小延遲= < 1秒)?
在此先感謝。
編輯 我編輯過的帖子,它是wpf。將項目放入列表並設置項目源並不能解決問題。
選項2是一個沒有去(雖然好建議雖然),但它需要立即顯示。我會嘗試第一個。 – Terry 2010-05-05 08:01:14
不客氣。其實他們是獨立適用的。對於「特定的時間量」,我的意思是指1秒鐘或更短的時間(一個人在兩次連續擊鍵之間的時間多一點)。 – 2010-05-05 08:17:51
確實如此,並且由於BeginUpdate和EndUpdate在我的wpf應用程序中不起作用,我認爲這將是唯一的解決方案,但我必須說服我的客戶。 :) – Terry 2010-05-05 08:19:54