前面我寫過“露雨資產庫”的第一篇和第二篇,分別介紹了介面設計和設計思路。
連結如下:
露雨資產庫(第一個.net2.0軟體)一 http://luyu.cnblogs.com/archive/2005/11/25/284281.html
露雨資產庫(第一個.net2.0軟體)二 http://luyu.cnblogs.com/archive/2005/12/02/289178.html
這一篇主要講為控制項增加自動完成功能的具體實現過程,和大家一起分享,如果覺得我寫的有不妥的地方,請給我留言或發MAIL給我,謝謝。
我們知道.net2.0為很多控制項增加了自動完成的功能,具體自動完成的資訊,我引用MSDN中的說明,請看。
-----------------------------------
如果您曾經用過 Internet Explorer,就會看過自動完成的操作過程。自動完成是指以下行為:當向一個文本控制項中輸入資料時,系統會自動建議它認為您可能會輸入的內容。該功能通常在使用者需要輸入很長或很複雜的字串時最為有用。要讓自動完成解決方案起作用,一個先決條件是存在一些資料集,系統可以使用這些資料集來尋找可能的匹配項。
現在,可以很容易地向 Windows 表單應用程式的文字框和組合框中添加自動完成支援。這兩個控制項都有三個新屬性:AutoCompleteMode、AutoCompleteSource 和 AutoCompleteCustomSource。可以通過將 AutoCompleteMode設定為 Append、Suggest 或 SuggestAppend 來啟用自動完成。將 AutoCompleteMode設定為 Append 可使最可能的匹配項自動追加到當前資料。如果設定為 Suggest,則會產生由一個或多個建議完成字串組成的下拉式清單。SuggestAppend同時執行這兩項任務。該控制項還需要一個源列表,這樣它就可以在使用者輸入資料時從中搜尋建議。AutoCompleteSource屬性允許您從一些系統源中進行選擇,例如 FileSystem、HistoryList、RecentlyUsedList、AllUrl 和 CustomSource。
如果選擇 CustomSource,則必須向 AutoCompleteCustomSource屬性提供一個字串列表。這可以在設計時或運行時完成。自訂來源非常強大,因為它們允許您為業務資料提供自動完成行為。例如,當表單載入並提供類別名稱列表以用作組合框的顯示源和自動完成源時,可以從資料庫中查詢產品類別的列表。該方法允許使用者快速選擇一個類別,而無需輸入完整的類別名稱或者手動導航很長的項列表。
-----------------------------------
很多朋友說,選擇了自動完成後,關閉程式,再次開啟還是會消失,只在程式執行時會有。在這裡我要告訴大家,不僅要選擇AutoCompleteCustomSource屬性,還需要寫代碼,或選擇項目的屬性設定才可以。
下面我把一些過程詳細的和大家說一下。
1.選擇AutoCompleteMode為Suggest,選擇AutoCompleteSource為AutoCompleteCustomSource.
2.設定項目的屬性設定,自訂自己的鍵名,我定義的為"HistoryKey"
3.填寫一些簡單的代碼就可以了。private void toolStripButton3_Click(object sender, EventArgs e)
{
if (CanHistoryKey == true) //讓使用者自己設定是否願意使用自動完成的功能
{
AutoCompleteStringCollection auto = new AutoCompleteStringCollection();//定義並執行個體化AutoCompleteStringCollection類
if (MyLib.Properties.Settings.Default.HistoryKey != null)
auto = MyLib.Properties.Settings.Default.HistoryKey;//設定時HistoryKey的值是為null的,所以不為空白時我們需要載入舊的曆史關鍵字
auto.Add(toolStripTextBox1.Text.Trim()); //添加新的曆史關鍵字
MyLib.Properties.Settings.Default.HistoryKey = auto; //將曆史關鍵字進行更新(不過並沒有儲存)
toolStripTextBox1.AutoCompleteCustomSource = auto; //立刻為控制項添加新的曆史關鍵字
}
}
在Form1_Load中加入toolStripTextBox1.AutoCompleteCustomSource = MyLib.Properties.Settings.Default.HistoryKey;
最重要的是要在關閉視窗前儲存這些記錄,要不然你關閉程式後,下次再執行時還是沒有以前的記錄了。private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
MyLib.Properties.Settings.Default.Save();
}
最後還要有一個清除的功能private void 清空記錄ToolStripMenuItem_Click(object sender, EventArgs e)
{
MyLib.Properties.Settings.Default.HistoryKey = null;
toolStripTextBox1.AutoCompleteCustomSource = null;
}
(我發現清除時,直接使用MyLib.Properties.Settings.Default.HistoryKey = null;就可以了,而且不用使用MyLib.Properties.Settings.Default.HistoryKey.Save();也可以。)
好啦,最後看看效果吧,很不錯的哦。至此我們為露雨資產庫又添加了一個貼心的小功能。 :)