RichTextBox是一种可用于显示、输入和操做格式文本,除了能够实现TextBox的全部功能,还能提供富文本的显示功能。 控件除具备TextBox 控件的全部功能外,还能设定文字颜色、字体和段落格式,支持字符串查找功能,支持rtf格式等功能。html
下面就其的经常使用到的功能进行介绍。数组
RichTextBox可设置Multiline属性来控制是否显示滚动套,true为是,false为否。,默认为true。(此项属性在TextBox亦可实现)浏览器
滚动条分为两种:水平(Horizontal)滚动条和垂直(Vertical)滚动条,经过RichTextBox的ScrollBars属性设置如何显示滚动条。(此项属性在TextBox亦可实现)ide
ScrollBars属性值:post
一、Both:只有当文本超过RichTextBox的宽度或长度时,才显示水平滚动条或垂直滚动条,或两个滚动条都显示。字体
二、None:从不显示任何类型的滚动条。网站
三、Horizontal:只有当文本超过RichTextBox的宽度时,才显示水平滚动条。必须将WordWrap属性设置为false,才会出现这种状况。(下面将会给出解释)this
四、Vertical:只有档文本超过RichTextBox的高度时,才显示垂直滚动条。spa
五、ForcedHorizontal:当WordWrap属性设置为false时,显示水平滚动条。在文本未超过RichTextBox的宽度时,该滚动条显示为浅灰色。3d
六、ForcedVertical:始终显示垂直滚动条。在文本未超过RichTextBox的长度时,该滚动条显示为浅灰色。
七、ForcedBoth:始终显示垂直滚动条。当WordWrap属性设置为false时,显示水平滚动条。在文本未超过RichTextBox的宽度或长度时,两个滚动条均显示为灰色。
注:RichTextBox的WordWrap属性:用于指示多行文本框控件在必要时是否换行到下一行的开始。当属性为true时,不论ScrollBars属性值是什么,都不会显示水平滚动条。
下面经过几个截图加以描述其区别。(此项属性TextBox亦可实现)
(1)、当WordWrap为true,ScrollBars为Both时:
因而可知,WordWrap为true时,一旦文本超过RichTextBox的宽度时,就会自动换行到下一行,天然不须要用到水平滚动条,也就不显示出来了。
(2)、当WordWrap为false,ScrollBars为Both时:
由此可知,WordWrap为false时,即便文本超过RichTextBox的宽度,也不会自动换行到下一行,只有用户输入回车时才会换行,而且当文本超过RichTextBox的宽度后,才会显示水平滚动条。
代码实现过程:
private
void
Form1_Load(
object
sender, EventArgs e)
//窗体的Load事件
{
richTextBox1.Multiline =
true
;
//将Multiline属性设置为true,实现显示多行
richTextBox1.ScrollBars = RichTextBoxScrollBars.Vertical;
//设置ScrollBars属性实现只显示垂直滚动
}
可经过RichTextBox的Font属性和ForeColor属性设置(Visual Studio2013社区版找不到SelectionFont和SelectionColor属性),也可经过代码实现,如文本字体设置为楷体,字体大小为12,字样是粗体,文本颜色为红色:
private
void
Form1_Load(
object
sender, EventArgs e)
//窗体的Load事件
{
richTextBox1.Multiline =
true
;
//将Multiline属性设为true,实现显示多行
richTextBox1.ScrollBars = RichTextBoxScrollBars.Vertical;
//设置ScrollBars属性实现只显示垂直滚动条
richTextBox1.SelectionFont =
new
Font (
"楷体"
, 12, FontStyle.Bold);
//设置SelectionFont属性实现控件中的文本为楷体,大小为12,字样是粗体
richTextBox1.SelectionColor = System.Drawing.Color.Red;
//设置SelectionColor属性实现控件中的文本颜色为红色
}
将RichTextBox控件显示为超连接样式
将以“http://”开头的Web连接地址做为超连接文本时,运行时RichTextBox超连接文本会自动变成蓝色字体且有下划线。
此时点击超连接文本不会有任何响应,须要在RichTextBox的LinkClicked事件中编写代码实现。
private
void
Form1_Load(
object
sender, EventArgs e)
//窗体的Load事件
{
richTextBox1.Multiline =
true
;
//将Multiline属性设为true,实现显示多行
richTextBox1.ScrollBars = RichTextBoxScrollBars.Vertical;
//设置ScrollBars属性实现只显示垂直滚动条
richTextBox1.Text =
"http://www.baidu.com百度一下你就知道"
; //设置Text属性
}
private
void
richTextBox1_LinkClicked(
object
sender, EventArgs e)
{
System.Diagnostics.Process.Start(e.LinkText);
//在控件LinkClicked事件中编写以下代码实现内容中的网址单击后能够访问网址
}
可经过设置SelectionBullet属性将选定的段落设置为项目符号列表的格 式,也可使用SelectionIndent属性和SelectionHangingIndent属性设置段落相对于控件的左右边缘进行缩进。下面用代 码将控件的SelectionBullet属性设置为true,使控件中的内容以项目符号列表的格式排列。
private
void
Form1_Load(
object
sender, EventArgs e)
{
richTextBox1.Multiline =
true
;
richTextBox1.ScrollBars = RichTextBoxScrollBars.Vertical ;
richTextBox1.SelectionBullet =
true
;
}
如下为属性SelectionBullet设为false和true时的差别(前者为false后者为true):
经过SelectionIndent属性设置一个整数,该整数表示控件的左边缘和文本的左边缘之间的距离(以像素为单位)。经过SelectionRightIndent属性设置一个整数,该整数表示控件的右边缘与文本的右边缘之间的距离(以像素为单位)。
如下经过代码实现SelectionIndent属性设置。
private
void
Form1_Load(
object
sender, EventArgs e)
{
richTextBox1.Multiline =
true
;
richTextBox1.ScrollBars = RichTextBoxScrollBars.Vertical ;
richTextBox1.SelectionIndent = 50 ;
}
差别以下组图:
SelectionRightIndent属性与SelectionIndent属性相似,可类比,固然也能够同时使用。
1
|
richTextBox1.SelectionFont=fontDialog1.Font;
//设置为字体对话框中选中的字体
|
1)SelectionChange事件——控件中选中的文本发生改变时,触发该事件。
2)TextChanged事件——控件中的文本内容发生改变时,触发该事件。
使用LoadFile( )方法.
(1)通常格式
RichTextBox对象名.LoadFile(文件名,文件类型);
(2)说明
RichTextBox 控件能够显示纯文本、Unicode 纯文本或 RTF 格式文件。若要显示这些文件,可调用 LoadFile 方法。例如,使用打开文件对话框选择一个文本文件并加载到richTextBox1控件中,代码以下:
openFileDialog1.Filter=
"文本文件(*.txt)|*.txt|全部文件(*.*)|*.*"
;
if
(openFileDialog1.ShowDialog()==DialogResult.OK)
{
string
fName=openFileDialog1.FileName;
richTextBox1.LoadFile(fName,RichTextBoxStreamType.PlainText );
}
RichTextBoxStreamType.PlainText为加载的文件类型,其余可选的枚举值以下:
//保存RTF格式文件
saveFileDialog1.Filter=
"RTF文件(*.rtf)|*.rtf"
; saveFileDialog1.DefaultExt=
"rtf"
;<br>
//默认的文件扩展名
if
(saveFileDialog1.ShowDialog()==DialogResult.OK)
richTextBox1.SaveFile(saveFileDialog1.FileName,RichTextBoxStreamType.RichText );
可借助剪贴板实现.
Clipboard.Clear();
//清空剪贴板
Bitmap bmp =
new
Bitmap(
@"d:\图片1.jpg"
);
//建立Bitmap类对象
Clipboard.SetImage(bmp);
//将Bitmap类对象写入剪贴板
richTextBox1.Paste();
//将剪贴板中的对象粘贴到RichTextBox1
RichTextBox 控件提供具备打开和保存文件的功能的方法。
LoadFile 方法使您得以将现有的 RTF 或 ASCII 文本文件加载到控件中。还能够从已打开的数据流加载数据。SaveFile 使您得以将文件保存到 RTF 或 ASCII 文本中。与 LoadFile 方法类似,还可使用 SaveFile 方法保存到开放式数据流。
//部分文字属性的更改
public void CreateMyRichTextBox() { RichTextBox richTextBox1 = new RichTextBox(); richTextBox1.Dock = DockStyle.Fill; richTextBox1.LoadFile("C:\\MyDocument.rtf"); richTextBox1.Find("Text", RichTextBoxFinds.MatchCase); richTextBox1.SelectionFont = new Font("Verdana", 12, FontStyle.Bold); richTextBox1.SelectionColor = Color.Red; richTextBox1.SaveFile("C:\\MyDocument.rtf", RichTextBoxStreamType.RichText); this.Controls.Add(richTextBox1); }
public void CreateMyRichTextBox() { RichTextBox richTextBox1 = new RichTextBox(); richTextBox1.Dock = DockStyle.Fill; richTextBox1.LoadFile("C:\\MyDocument.rtf"); richTextBox1.Find("Text", RichTextBoxFinds.MatchCase); richTextBox1.SelectionFont = new Font("Verdana", 12, FontStyle.Bold); richTextBox1.SelectionColor = Color.Red; richTextBox1.SaveFile("C:\\MyDocument.rtf", RichTextBoxStreamType.RichText); this.Controls.Add(richTextBox1); }
例2
更加复杂的多媒体类型的文字段落的录入
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Win_Test { public partial class RichTextBox_Test : Form { public RichTextBox_Test() { InitializeComponent(); } Font oldFont; Font newFont; //richTextBox1 所选文字加粗 private void button1_Click(object sender, EventArgs e) { oldFont = this.richTextBox1.SelectionFont; if (oldFont.Bold) {
newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bold);
} else
{ newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold);
}
this.richTextBox1.SelectionFont = newFont; this.richTextBox1.Focus(); } //richTextBox1 所选文字加下划线 private void button2_Click(object sender, EventArgs e) { oldFont = this.richTextBox1.SelectionFont; if (oldFont.Underline) {
newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Underline);
} else
{ newFont = new Font(oldFont, oldFont.Style | FontStyle.Underline);
}
this.richTextBox1.SelectionFont = newFont; this.richTextBox1.Focus(); } //richTextBox1 所选文字为斜体 private void button3_Click(object sender, EventArgs e) { oldFont = this.richTextBox1.SelectionFont; if (oldFont.Italic) {
newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Italic);
} else { newFont = new Font(oldFont, oldFont.Style | FontStyle.Italic);
}
this.richTextBox1.SelectionFont = newFont; this.richTextBox1.Focus(); } //richTextBox1 所选文字居中 private void button4_Click(object sender, EventArgs e) { if (this.richTextBox1.SelectionAlignment == HorizontalAlignment.Center) {
this.richTextBox1.SelectionAlignment = HorizontalAlignment.Left;
} else
{ this.richTextBox1.SelectionAlignment = HorizontalAlignment.Center;
}
this.richTextBox1.Focus(); } // 在文本框输入字体大小 private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { //remove all characters that are not numbers,backspace and enter if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13) {
e.Handled = true;
} else if (e.KeyChar == 13) { TextBox txt = (TextBox)sender; if (txt.Text.Length > 0) ApplyTextSize(txt.Text); e.Handled = true; this.richTextBox1.Focus(); } } //根据textBox1的值设置richTextBox1的字体 private void ApplyTextSize(string textSize) { float newSize = Convert.ToSingle(textSize); FontFamily currentFontFamily; Font newFont; currentFontFamily = this.richTextBox1.SelectionFont.FontFamily; newFont = new Font(currentFontFamily, newSize); this.richTextBox1.SelectionFont = newFont; } //在textBox1控件验证时触发,设置richTextBox1的字体 private void textBox1_Validating(object sender, CancelEventArgs e) { TextBox txt = (TextBox)sender; ApplyTextSize(txt.Text); this.richTextBox1.Focus(); } //让浏览器打开超连接地址 private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e) { System.Diagnostics.Process.Start(e.LinkText); } //richTextBox1 加载 Test.rtf 文件 private void button5_Click(object sender, EventArgs e) { try { richTextBox1.LoadFile("Test.rtf"); } catch (System.IO.FileNotFoundException) { MessageBox.Show("No file to be load yet"); } } //richTextBox1 保存到 Test.rtf 文件 private void button6_Click(object sender, EventArgs e) { try { richTextBox1.SaveFile("Test.rtf"); } catch (System.Exception err) { MessageBox.Show(err.Message); } } } }
Demo using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Win_Test { public partial class RichTextBox_Test : Form { public RichTextBox_Test() { InitializeComponent(); } Font oldFont; Font newFont; //richTextBox1 所选文字加粗 private void button1_Click(object sender, EventArgs e) { oldFont = this.richTextBox1.SelectionFont; if (oldFont.Bold) { newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bold); } else newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold); this.richTextBox1.SelectionFont = newFont; this.richTextBox1.Focus(); } //richTextBox1 所选文字加下划线 private void button2_Click(object sender, EventArgs e) { oldFont = this.richTextBox1.SelectionFont; if (oldFont.Underline) { newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Underline); } else newFont = new Font(oldFont, oldFont.Style | FontStyle.Underline); this.richTextBox1.SelectionFont = newFont; this.richTextBox1.Focus(); } //richTextBox1 所选文字为斜体 private void button3_Click(object sender, EventArgs e) { oldFont = this.richTextBox1.SelectionFont; if (oldFont.Italic) { newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Italic); } else newFont = new Font(oldFont, oldFont.Style | FontStyle.Italic); this.richTextBox1.SelectionFont = newFont; this.richTextBox1.Focus(); } //richTextBox1 所选文字居中 private void button4_Click(object sender, EventArgs e) { if (this.richTextBox1.SelectionAlignment == HorizontalAlignment.Center) this.richTextBox1.SelectionAlignment = HorizontalAlignment.Left; else this.richTextBox1.SelectionAlignment = HorizontalAlignment.Center; this.richTextBox1.Focus(); } // 在文本框输入字体大小 private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { //remove all characters that are not numbers,backspace and enter if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13) { e.Handled = true; } else if (e.KeyChar == 13) { TextBox txt = (TextBox)sender; if (txt.Text.Length > 0) ApplyTextSize(txt.Text); e.Handled = true; this.richTextBox1.Focus(); } } //根据textBox1的值设置richTextBox1的字体 private void ApplyTextSize(string textSize) { float newSize = Convert.ToSingle(textSize); FontFamily currentFontFamily; Font newFont; currentFontFamily = this.richTextBox1.SelectionFont.FontFamily; newFont = new Font(currentFontFamily, newSize); this.richTextBox1.SelectionFont = newFont; } //在textBox1控件验证时触发,设置richTextBox1的字体 private void textBox1_Validating(object sender, CancelEventArgs e) { TextBox txt = (TextBox)sender; ApplyTextSize(txt.Text); this.richTextBox1.Focus(); } //让浏览器打开超连接地址 private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e) { System.Diagnostics.Process.Start(e.LinkText); } //richTextBox1 加载 Test.rtf 文件 private void button5_Click(object sender, EventArgs e) { try { richTextBox1.LoadFile("Test.rtf"); } catch (System.IO.FileNotFoundException) { MessageBox.Show("No file to be load yet"); } } //richTextBox1 保存到 Test.rtf 文件 private void button6_Click(object sender, EventArgs e) { try { richTextBox1.SaveFile("Test.rtf"); } catch (System.Exception err) { MessageBox.Show(err.Message); } } } }