Textbox 可以設定自動完成使用者輸入的文字。
Textbox的屬性設定
要讓Textbox有自動完成的功能,必須指定AutoCompleteSource屬性,預設為None,也就是不使用,總共有7種來源可選。如果資料來源要由自己提供,例如從資料庫取得的資料,就必須指定為CustomSource。並且同時要指定AutoCompleteMode屬性,這是自動完成的表現方式,預設為None,表示沒有任何形式的提示,也就是自動完成有動作,但沒告知使用者,看起來沒有任何自動完成的效果。可用的屬性稍後介紹。
最後只要告訴Textbox可用的資料有哪些,就可讓它幫你達成自動完成的動作。把資料設定在AutoCompleteCustomSource屬性,依照指示一筆資料一行。
2. AutoCompleteMode屬性
可用的屬性有3種:- Suggest:只提供建議。文字框下會列出可選的資料,但不會自動幫你填在文字框中。如下圖。
- Append:直接附加可用的資料。不會提供建議的資料清單,當你輸入第一個字元時,自動幫你把找到相符的第一筆資料附加在你輸入的字元之後,並反白顯示,當你輸入第2個字元時,繼續幫你找到相符的資料做附加,持續下去。如下圖1為輸入第1個字元時的提示資料,圖2為輸入第2個字元時提示的資料。
- SuggestAppend:綜合以上2種效果,既顯示資料清單也自動幫你附加第一筆文字。
以程式碼方式達成
以上的說明,全都在設計階段就可完成。當然也可以程式碼方式來達到同樣效果,如果資料必須從資料庫載入的話也是必須這麼做。private void initAutoCompleteTextBox()
{
AutoCompleteStringCollection autoData = new AutoCompleteStringCollection();
autoData.Add("Apple");
autoData.Add("Banana");
autoData.Add("Blackberry");
autoData.Add("Blueberry");
autoData.Add("Lemon");
autoData.Add("Mango");
autoData.Add("Orange");
autoData.Add("Pineapple");
autoData.Add("Strawberry");
txtAuto.AutoCompleteSource = AutoCompleteSource.CustomSource;
txtAuto.AutoCompleteMode = AutoCompleteMode.Suggest;
txtAuto.AutoCompleteCustomSource = autoData;
}
資料使用AutoCompleteStringCollection類別來加入,之後再指定給Textbox就可以了。
大大好,請問輸入文字後只會找前幾個字,可以改成找關鍵字?
回覆刪除依照你的案例可以輸入berry跳出Blackberry / Blueberry / Strawberry嗎?
感恩..
內建的 Textbox 沒有提供這個功能,可能要繼承它然後改寫判斷機制
刪除http://stackoverflow.com/questions/26979900/how-can-i-get-c-sharp-textbox-autocomplete-to-make-suggestions-based-on-contains