實現效果如上圖,點擊“Search”按鈕,開始從文首查找關鍵字“menu”,并高亮,再次點擊“Search”按鈕,繼續查找下一個。查找到文末,自動從文首重新查找。
private int _searchIndex = 0;//查找開始位置/// <summary>/// 查找按鈕/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnSearch_Click(object sender, EventArgs e){var findWord = tbSearch.Text.Trim();if (string.IsNullOrEmpty(findWord) || string.IsNullOrEmpty(tbEditor.Text.Trim()) ) return;var searchResult = tbEditor.Find(findWord, _searchIndex, RichTextBoxFinds.None);if (searchResult == -1){if (_searchIndex == 0){/* MessageBoxTimeOut* 自定義的延時自動關閉提示,可以用 MessageBox提示用戶*/new MessageBoxTimeOut().Show(1000, @"未找到相關內容!", @"提示", MessageBoxButtons.OK,MessageBoxIcon.Information);}/* _searchIndex>0 * 說明之前有查找結果,并且已經越過最后一個查找結果位置后,則自動從頭開始查找。* 也可以提示用戶是否從頭查找。*/_searchIndex = 0; }else{tbEditor.Focus();tbEditor.Select(searchResult, findWord.Length);_searchIndex = searchResult + findWord.Length;}}/// <summary>/// 查找關鍵字變化后,重置_searchIndex/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void tbSearch_TextChanged(object sender, EventArgs e){_searchIndex = 0;}
默認只做了向下查找功能,有興趣可以自已修改,增加向上查找功能,文末提示功能。