版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/admans/article/details/81560532
实现效果如上图,点击“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;
}
默认只做了向下查找功能,有兴趣可以自已修改,增加向上查找功能,文末提示功能。