介绍
在 C# 的 Windows Forms 中,RichTextBox 是一个功能强大的文本编辑控件,支持富文本格式(如字体、颜色、段落样式等),比普通的 TextBox 具有更多格式化功能。
以下是 RichTextBox 的常见用法示例:
注意
当内容超过5万时,可能会卡顿
基本操作(设置和获取文本)
// 设置文本
richTextBox1.Text = "这是普通文本";
// 设置富文本(带格式)
richTextBox1.Rtf = @"{\rtf1\ansi\deff0{\colortbl;\red0\green0\blue0;\red255\green0\blue0;}
这是\b 粗体\b0 文本,这是\cf2 红色\cf0 文本}";
// 获取纯文本
string plainText = richTextBox1.Text;
// 获取RTF格式文本
string rtfText = richTextBox1.Rtf;
文本格式化
// 选择部分文本并设置格式
richTextBox1.Select(5, 3); // 从索引5开始选择3个字符
richTextBox1.SelectionFont = new Font("微软雅黑", 12, FontStyle.Bold | FontStyle.Italic);
richTextBox1.SelectionColor = Color.Red;
richTextBox1.SelectionBackColor = Color.Yellow;
// 插入新行
richTextBox1.AppendText(Environment.NewLine);
// 插入带格式的文本
richTextBox1.SelectionStart = richTextBox1.TextLength;
richTextBox1.SelectionFont = new Font("宋体", 10);
richTextBox1.SelectionColor = Color.Blue;
richTextBox1.AppendText("新插入的蓝色文本");
加载和保存文件
// 加载RTF文件
private void LoadRtfFile(string filePath)
{
if (File.Exists(filePath))
{
richTextBox1.LoadFile(filePath, RichTextBoxStreamType.RichText);
}
}
// 保存为RTF文件
private void SaveRtfFile(string filePath)
{
richTextBox1.SaveFile(filePath, RichTextBoxStreamType.RichText);
}
// 加载纯文本文件
private void LoadTextFile(string filePath)
{
if (File.Exists(filePath))
{
richTextBox1.LoadFile(filePath, RichTextBoxStreamType.PlainText);
}
}
常用属性
Multiline:是否支持多行文本(默认true)ScrollBars:滚动条样式(None/Horizontal/Vertical/Both)ReadOnly:是否只读WordWrap:是否自动换行,如果要显示水平滚动条,必须设置为false
显示水平滚动条
ScrollBars设置为:both
WordWrap设置为:false
常用方法
Clear():清空内容Copy()/Cut()/Paste():剪贴板操作Find(string):查找文本SelectAll():全选文本
定位
定位到顶部
确保控件已经布局完成,在执行显示到左上角,该方法最通用,对于只有一行的内容也生效
// 确保控件已经布局完成,在执行显示到左上角
previewRichTextBox.BeginInvoke(new Action(() =>
{
// 通过发送消息,显示到左上角(该方法最通用,对于只有一行的内容也生效)
System.Drawing.Point pos = new System.Drawing.Point(0, 0);
SendMessage(previewRichTextBox.Handle, EM_SETSCROLLPOS, IntPtr.Zero, ref pos);
}));
下面方式不推荐,只显示一行时,下面方法不生效,会显示到该行的行尾:
// 将光标移动到文本开头
previewRichTextBox.SelectionStart = 0;
// 不选择任何文本
previewRichTextBox.SelectionLength = 0;
// 滚动到光标位置(顶部)
previewRichTextBox.ScrollToCaret();
事件
常用事件包括:
TextChanged:文本内容改变时触发SelectionChanged:选中文本改变时触发LinkClicked:点击文本中的链接时触发(需设置DetectUrls = true)
示例:
private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
{
System.Diagnostics.Process.Start(e.LinkText); // 打开链接
}
RichTextBox 适合用于需要文本格式化的场景,如简易编辑器、日志显示、文档查看器等。根据需求,你可以灵活运用其格式控制功能来实现丰富的文本展示效果。