2011-11-02 55 views
10
// [in designer] textBoxInContext.AutoCompleteMode = Suggest 
// [in designer] textBoxInContext.AutoCompleteSource = CustomSource 
AutoCompleteStringCollection autoComplete = new AutoCompleteStringCollection(); 
autoComplete.AddRange(myArrayofStrings); 
textBoxInContext.AutoCompleteCustomSource = autoComplete; 

我有這樣的代碼,它在MSDN中記錄的效果很好。

問題:如果用戶鍵入「PS」,它將顯示以「PS」開頭的所有字符串;我想顯示所有包含「PS」的字符串在winform中自動完成[包含而不是以開始] TextBox

任何指針?

+1

這應該是一個相當簡單的任務,但我們需要查看更多代碼來確定要更改的行。類似於'var results = autoComplete.Where(x => x.StartsWith(「PS」);'變成'var results = autoComplete.Where(x => x.Contains(「PS」);' – JConstantine

+0

@JLevett:這就是所有的代碼我試圖使用MS提供的自動完成功能[http://msdn.microsoft.com/en-us/library/system.windows.forms.textbox.autocompletemode%28v=vs.90%29 .aspx] – karephul

+1

您可能需要查看[http://stackoverflow.com/questions/1524166/autocomplete-textbox-with-features-of-like-clause-example-hello-c-sharp-window]中的「相關鏈接「部分 - 看起來像這樣的行爲幾乎是不可能的 – jCoder

回答

0

愚蠢但有趣的建議:使一個繼承自AutoCompleteStringCollection的類在調試中與它一起玩,看看你是否可以僞裝成這個類。

正常建議:使用列表框自己創建自動完成。

-2

我碰到同樣的問題,WPF Autocomplete Textbox Control是我在CodeProject中找到的,它工作得很好。它是用WPF編寫的,但您可以修改它以滿足您的需求。

+0

答案沒有提供問題的解決方案,它與用戶問題相同 –

+0

這是相當舊但...我記得我花了相當長的一段時間來驗證提供的鏈接實際上在WinForm項目中工作,我只是認爲我最好離開鏈接而不是粘貼大量的鱈魚在這裏。 – kennyzx

+0

畢竟它基本上是字符串處理......都設置WinForm/WPFTextBox的Text屬性,對吧? – kennyzx

1

如果你沒有找到另一種方式,我建議做手工:

  1. 使用不帶任何項目的組合框(你會在以後手工填充它們)。
  2. 有你的可能建議的字符串數組。
  3. combobox.TextChangedKeyUp事件採取的文本,並將它與您的字符串數組任何你想要的方式,清除combobox.Items後,添加發現結果向combobox.Items,並確保,如果你有到DroppedDown屬性設置爲true找到建議。
相關問題