使用過IE的人應該對自動完成並不陌生,它可以協助使用者快速輸入曾經輸入過的內容,
圖表 1 IE的自動完成
這個是在網頁上的過去有人問過,“自動完成在Windows Form 中是否可行?”答案在.NET Framework 1.x 中沒有此公能,需要使用者自行開發。在.NET Framework 2.0 中已經內建了此功能,本文介紹.Net Framework 2.0 的Windows Form 自動完成。
自動完成屬性:
Windows Form 中的TextBox、ComboBox…等文字框類的控制項支援自動完成屬性,通過這些屬性的制定,可以指定自動完成功能的不同形式:
AutoCompleteMode屬性
指定自動完成的形式,可以設定None、Suggest、Append、SuggestAppend幾種形式。預設值是None,不使用自動完成模式。設定為Append模式時,會在輸入後自動將資料來源中的文字加入到方框中。(圖2)設定為SuggestAppend模式時,不會自動補齊資料,而是彈出列表供使用者選擇(圖3)
圖表 2 Append 圖表 3SuggestAppend
AutoCompleteSource屬性:
設定自動完成資料的來源。可以設定None、AllSystemSource、AllUrl、CustomSource、FileSystem、FileSystemDirectories、FileSystem、FileSystemDirectories、HistoryList、RecentlyUsedList等多項。
AutoCompleteCustomSource屬性
當AutoCompleteSource的屬性設定為CustomSource時,可以用此屬性自訂自動完成字串。
自定來源
為了應付更多非文檔或Url的要求,AutoCompleteSource 屬性提供CustomSource選項讓開發人員可以透過AutoCompleteCustomSource屬性指定更多資料來源以便符合更多類型的需要。
AutoCompleteCustomSource屬性是AutoCompleteStringCollection的形態,支援Add和AddRange等方法以加入需要的字串,如例:
VB.Net Dim member() As String = {“one”,”two”} TextBox2.AutoCompleteCustomSource.AddRange(member) |
新輸入的資料不會加入自動完成清單的解決方案
需要使用Add()方法,系統不會自動加入
結束程式,再啟動,以前的自動完成清單不見了?
程式結束後再啟動,你會發現先前所加入的清單不見了?沒錯,那是因為之前的資料(自動完成的字串集合)只保留在記憶體中,當應用程式結束後,記憶體中的資料也隨之消失,解決方案是將記憶體中的資料存檔,方法當然有很多了。可以使用FileStream StreamWriter 等,在這裡,我推薦使用Windows應用程式設定的功能(就是App.Config)設定中有專門的AutoCompleteStringCollection類型可以供存貯,關於方法大家可以查閱MSDN的資料在這裡我就不再廢話了。
結束語
Windows Form 在 .Net 2.0中終於有了自動完成功能,這個功能可以套用到TextBox及ComboBox等文字輸入類的控制項,配合應用程式的設定檔,可以達到更完整的功能。