2010-02-01 32 views
5

我正在C#中使用一個文本框,它充當數據庫(Access SQL)通過ID號進行記錄查找的輸入。我希望能夠在文本框中使用自動完成功能,但有一些限制。C#文本框自動完成:限制爲〜50條建議

最大的問題是系統中ID的數量是幾千的數量級,所以我不需要在它們全部填充一次自動完成框,我需要監視文本框中的內容並僅顯示自動填充建議當有〜50或更少的選擇時。

目前,我做每個的KeyDown這個查詢:從表SELECT COUNT(*)WHERE ID LIKE「textbox.text%」

當計數小於50我填的是自動完成從結果上述語句的SELECT id版本。這導致了我幾個問題,大多數似乎是我不明白的C#怪癖。

1)當我在單個KeyDown事件中清除或添加到AutoCompleteCustomSet時,按下的實際按鍵不會被添加到字符串中(即不會出現正常的文本框輸入行爲)。

2)我嘗試將AutoCompleteCustomeSet更新分離到不同的事件(KeyPress或KeyUp),但是這會導致崩潰,或者自動完成顯示只會在隱藏之前短暫顯示。

我覺得這個問題一定是常見的,我只是以錯誤的方式去做。任何人都可以提供建議嗎?謝謝!

編輯:這是Windows窗體

EDIT2:一個頂部50選擇不固定,隨着用戶的類型(和潛在的退格和重新類型)的頂部50將改變的問題。

+1

這是WinForms? WPF? ASP.NET? – LBushkin 2010-02-01 19:49:06

回答

1

你嘗試TextChanged事件呢? 我希望事件在文本框更新後被解僱,從而避免你提到的怪癖。

+0

謝謝,這確實奏效。我的部分問題還在每次按鍵上的AutoCompleteCustomSet上調用Clear()。顯然這並不是必須的,而且這樣做有負面影響。 – Rich 2010-02-02 13:33:34

0

難道你不能只從表中選擇TOP 50哪裏..​​....?

0

只是將您的建議限制爲50人爲您工作? 當您選擇您的建議,您可以使用這樣的查詢:

SELECT TOP 50 * FROM YourTable WHERE .....