实现效果如上图,点击“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;}
默认只做了向下查找功能,有兴趣可以自已修改,增加向上查找功能,文末提示功能。