(C#)RichTextBox控件查找文本演示(功能全)
RichTextBox控件查找文本演示,包括查找第一个/下一个/上一个/最后一个.
网上有很多方法,但是不能实现查询上一个功能。
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace vjsdn_tester
{
//操作RichTextBox控件的类. by www.csframework.com
public class RichTextBoxTool
{
/// <summary>
/// 自己定义查找方法.参数content是要查询的内容.
/// type是查询条件.如:从文件头部向下查询,从文件尾部向上查询.
/// 如type= RichTextBoxFinds.None 表示从文件头部向下查询.
/// </summary>
public static void FindText(RichTextBox rich, string content, RichTextBoxFinds options)
{
int startIndex;
int endIndex;
if ((options & RichTextBoxFinds.Reverse) == RichTextBoxFinds.Reverse)
{
startIndex = 0;
endIndex = rich.SelectionStart;
}
else
{
startIndex = rich.SelectionStart + rich.SelectionLength;
endIndex = rich.Text.Length;
}
int index = rich.Find(content, startIndex, endIndex, options);
if (index >= 0) //如果找到
ShowSelection(rich, index, content.Length);
else
MessageBox.Show("Not found!");
}
//查找第一个
public static void FindFirst(RichTextBox rich, string content)
{
int index = rich.Find(content, 0);
if (index >= 0) ShowSelection(rich, index, content.Length);
}
//查找最后一个
public static void FindLast(RichTextBox rich, string content)
{
int index = rich.Find(content, rich.Text.Length, RichTextBoxFinds.Reverse);
if (index >= 0) ShowSelection(rich, index, content.Length);
}
//选择搜索到的文本
private static void ShowSelection(RichTextBox rich, int index, int length)
{
rich.SelectionStart = index;
rich.SelectionLength = length;
rich.SelectionColor = Color.Red;
rich.Focus();
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
namespace vjsdn_tester
{
//操作RichTextBox控件的类. by www.csframework.com
public class RichTextBoxTool
{
/// <summary>
/// 自己定义查找方法.参数content是要查询的内容.
/// type是查询条件.如:从文件头部向下查询,从文件尾部向上查询.
/// 如type= RichTextBoxFinds.None 表示从文件头部向下查询.
/// </summary>
public static void FindText(RichTextBox rich, string content, RichTextBoxFinds options)
{
int startIndex;
int endIndex;
if ((options & RichTextBoxFinds.Reverse) == RichTextBoxFinds.Reverse)
{
startIndex = 0;
endIndex = rich.SelectionStart;
}
else
{
startIndex = rich.SelectionStart + rich.SelectionLength;
endIndex = rich.Text.Length;
}
int index = rich.Find(content, startIndex, endIndex, options);
if (index >= 0) //如果找到
ShowSelection(rich, index, content.Length);
else
MessageBox.Show("Not found!");
}
//查找第一个
public static void FindFirst(RichTextBox rich, string content)
{
int index = rich.Find(content, 0);
if (index >= 0) ShowSelection(rich, index, content.Length);
}
//查找最后一个
public static void FindLast(RichTextBox rich, string content)
{
int index = rich.Find(content, rich.Text.Length, RichTextBoxFinds.Reverse);
if (index >= 0) ShowSelection(rich, index, content.Length);
}
//选择搜索到的文本
private static void ShowSelection(RichTextBox rich, int index, int length)
{
rich.SelectionStart = index;
rich.SelectionLength = length;
rich.SelectionColor = Color.Red;
rich.Focus();
}
}
}
测试代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace vjsdn_tester
{
public partial class frmRichboxSearher : Form
{
public frmRichboxSearher()
{
InitializeComponent();
}
//查找下一个单词
private void btnFindNext_Click(object sender, EventArgs e)
{
string content = txtContent.Text;
RichTextBoxTool.FindText(this.richTextBox1, content, RichTextBoxFinds.None);
}
//查找第一个单词
private void btnFindFirst_Click(object sender, EventArgs e)
{
string content = txtContent.Text;
RichTextBoxTool.FindFirst(this.richTextBox1, content);
}
//查找上一个单词
private void btnFindPrior_Click(object sender, EventArgs e)
{
string content = txtContent.Text;
RichTextBoxTool.FindText(this.richTextBox1, content, RichTextBoxFinds.Reverse);
}
//查找最后一个单词
private void btnFindLast_Click(object sender, EventArgs e)
{
string content = txtContent.Text;
RichTextBoxTool.FindLast(this.richTextBox1, content);
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace vjsdn_tester
{
public partial class frmRichboxSearher : Form
{
public frmRichboxSearher()
{
InitializeComponent();
}
//查找下一个单词
private void btnFindNext_Click(object sender, EventArgs e)
{
string content = txtContent.Text;
RichTextBoxTool.FindText(this.richTextBox1, content, RichTextBoxFinds.None);
}
//查找第一个单词
private void btnFindFirst_Click(object sender, EventArgs e)
{
string content = txtContent.Text;
RichTextBoxTool.FindFirst(this.richTextBox1, content);
}
//查找上一个单词
private void btnFindPrior_Click(object sender, EventArgs e)
{
string content = txtContent.Text;
RichTextBoxTool.FindText(this.richTextBox1, content, RichTextBoxFinds.Reverse);
}
//查找最后一个单词
private void btnFindLast_Click(object sender, EventArgs e)
{
string content = txtContent.Text;
RichTextBoxTool.FindLast(this.richTextBox1, content);
}
}
}
参考文档:
使用FastReport打印RichTextBox RTF 格式的报表
.NET RichTextBox控件使用详解
C# RichTextbox中插入图片
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
软件主窗体主界面设计 | MiniFramework蝇量框架 | Winform框架|C/S开发框架
软件开发平台 - 软件开发框架介绍-C/S开发框架
Winform C/S架构软件用户授权注册系统V2.1新功能(2021版)
C/S软件授权注册系统成功案例-TMS物流管理系统软件授权证书应用
C# Winform 软件用户授权注册系统正式发布
Winform Html Editor 使用kindeditor组件实现winform Html 编辑器
[原创]多个窗体之间的参数传递与数据共享(附:UML图)
[下载]超好用高效率SQL客户端查询分析器(sqldbx)
使用FastReport打印RichTextBox RTF 格式的报表
.NET RichTextBox控件使用详解
C# RichTextbox中插入图片
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
软件主窗体主界面设计 | MiniFramework蝇量框架 | Winform框架|C/S开发框架
软件开发平台 - 软件开发框架介绍-C/S开发框架
Winform C/S架构软件用户授权注册系统V2.1新功能(2021版)
C/S软件授权注册系统成功案例-TMS物流管理系统软件授权证书应用
C# Winform 软件用户授权注册系统正式发布
Winform Html Editor 使用kindeditor组件实现winform Html 编辑器
[原创]多个窗体之间的参数传递与数据共享(附:UML图)
[下载]超好用高效率SQL客户端查询分析器(sqldbx)
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
