版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的
RTF文件即富文本格式,是由微软公司开发的跨平台文档格式,支持在多种操作系统和应用程序之间互相创建和编辑。本节将综合运用富文本框、菜单、对话框、工具栏、状态栏等控件和组件制作一个Rrf文件编辑器。
【例 8.65】【项目:code8-065】Rtf文件编辑器。
使用到的控件或组件具体参看下图:
图8-108 Rtf文件编辑器设计界面
菜单项设置:
表8-2 Rtf文件编辑器菜单项设置
菜单名称 | 菜单文本 | 功能 |
文件FToolStripMenuItem | 文件 | |
新建文件NToolStripMenuItem | 新建文件 | 新建一个rtf文档 |
载入文件LToolStripMenuItem | 载入文件 | 载入一个已经有的rtf文档 |
保存文件SToolStripMenuItem | 保存文件 | 将文档保存为rtf文件 |
退出XToolStripMenuItem | 退出 | 退出编辑器 |
编辑EToolStripMenuItem | 编辑 | |
剪切ToolStripMenuItem | 剪切 | 对选择内容进行剪切 |
复制CToolStripMenuItem | 复制 | 复制选择的内容 |
粘贴PToolStripMenuItem | 粘贴 | 将剪贴板内容粘贴到当前编辑器 |
帮助HToolStripMenuItem | 帮助 | |
关于AToolStripMenuItem | 关于 | 编辑器的说明 |
工具栏依次为:
表8-3 Rtf文件编辑器工具栏设置
工具栏项目名称 | 工具栏项目文本 | 功能 |
ToolStripButton1 | 撤销 | 取消当前操作 |
ToolStripButton2 | 重做 | 重做当前操作 |
ToolStripButton3 | 文字颜色 | 更改选中文字的颜色 |
ToolStripButton4 | 文字背景 | 更改选中文字的背景色 |
ToolStripComboBox1 | 字体 | 更改选中文字的字体 |
ToolStripComboBox2 | 文字大小 | 更改选中文字的大小 |
ToolStripButton5 | 粗体 | 设置选中文字为粗体字 |
ToolStripButton6 | 斜体 | 设置选中文字为斜体字 |
ToolStripButton7 | 下划线 | 设置选中文字下划线 |
ToolStripButton8 | 左对齐 | 选中段落左对齐 |
ToolStripButton9 | 居中对齐 | 选中段落居中对齐 |
ToolStripButton10 | 右对齐 | 选中段落右对齐 |
ToolStripButton11 | 文档背景色 | 更改整个文档的背景色 |
ToolStripButton12 | 插入图片 | 向文档光标位置插入图片 |
控件或组件的属性:
表8-4 Rtf文件编辑器控件或组件属性设置
控件/组件名称 | 属性 | 值 |
Form1 | Text | Rtf文件编辑器 |
RichTextBox1 | Dock | Fill |
OpenFileDialog1 | Filter | rtf文本|*.rtf |
OpenFileDialog1 | Title | 打开文件 |
OpenFileDialog2 | Filter | 图片文件|*.jpg;*.png;*.bmp |
OpenFileDialog2 | Title | 选择要插入的图片 |
SaveFileDialog1 | Filter | rtf文本|*.rtf |
SaveFileDialog1 | Title | 保存文件 |
具体代码:
//文字字体
string FontName;
//文字大小
int FontSize;
//窗体载入时设置好初始值
private void Form1_Load(object sender, EventArgs e)
{
FontName = "宋体";
FontSize = 10;
//添加常用字体名称
ToolStripComboBox1.Items.Add("宋体");
ToolStripComboBox1.Items.Add("楷体;");
ToolStripComboBox1.Items.Add("隶书");
ToolStripComboBox1.Items.Add("仿宋");
ToolStripComboBox1.Items.Add("微软雅黑");
ToolStripComboBox1.Text = ToolStripComboBox1.Items[0].ToString();
ToolStripComboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
//添加字体大小
for (int i = 6; i <= 40; i++)
ToolStripComboBox2.Items.Add(i.ToString());
ToolStripComboBox2.Text = "10";
ToolStripComboBox2.DropDownStyle = ComboBoxStyle.DropDownList;
}
//撤销
private void ToolStripButton1_Click(object sender, EventArgs e)
{
RichTextBox1.Undo();
}
//重做
private void ToolStripButton2_Click(object sender, EventArgs e)
{
RichTextBox1.Redo();
}
//设置文字颜色
private void ToolStripButton3_Click(object sender, EventArgs e)
{
if (ColorDialog1.ShowDialog() == DialogResult.OK)
RichTextBox1.SelectionColor = ColorDialog1.Color;
}
//设置文字背景色
private void ToolStripButton4_Click(object sender, EventArgs e)
{
if (ColorDialog1.ShowDialog() == DialogResult.OK)
RichTextBox1.SelectionBackColor = ColorDialog1.Color;
}
//设置文字字体
private void ToolStripComboBox1_Click(object sender, EventArgs e)
{
FontName = ToolStripComboBox1.Text;
RichTextBox1.SelectionFont = new Font(FontName, FontSize);
}
//设置文字大小
private void ToolStripComboBox2_Click(object sender, EventArgs e)
{
FontSize = int.Parse(ToolStripComboBox2.Text);
RichTextBox1.SelectionFont = new Font(FontName, FontSize);
}
//设置粗体
private void ToolStripButton5_Click(object sender, EventArgs e)
{
FontStyle selFontStyle = RichTextBox1.SelectionFont.Style;
if (selFontStyle == null)
selFontStyle = FontStyle.Regular;
selFontStyle = selFontStyle | FontStyle.Bold;
RichTextBox1.SelectionFont = new Font(RichTextBox1.SelectionFont, selFontStyle);
}
//设置斜体
private void ToolStripButton6_Click(object sender, EventArgs e)
{
FontStyle selFontStyle = RichTextBox1.SelectionFont.Style;
if (selFontStyle == null)
selFontStyle = FontStyle.Regular;
selFontStyle = selFontStyle | FontStyle.Italic;
RichTextBox1.SelectionFont = new Font(RichTextBox1.SelectionFont, selFontStyle);
}
//设置下划线
private void ToolStripButton7_Click(object sender, EventArgs e)
{
FontStyle selFontStyle = RichTextBox1.SelectionFont.Style;
if (selFontStyle == null)
selFontStyle = FontStyle.Regular;
selFontStyle = selFontStyle | FontStyle.Underline;
RichTextBox1.SelectionFont = new Font(RichTextBox1.SelectionFont, selFontStyle);
}
//左对齐
private void ToolStripButton8_Click(object sender, EventArgs e)
{
RichTextBox1.SelectionAlignment = HorizontalAlignment.Left;
}
//居中对齐
private void ToolStripButton9_Click(object sender, EventArgs e)
{
RichTextBox1.SelectionAlignment = HorizontalAlignment.Center;
}
//右对齐
private void ToolStripButton10_Click(object sender, EventArgs e)
{
RichTextBox1.SelectionAlignment = HorizontalAlignment.Right;
}
//设置富文本框背景色
private void ToolStripButton11_Click(object sender, EventArgs e)
{
if (ColorDialog1.ShowDialog() == DialogResult.OK)
RichTextBox1.BackColor = ColorDialog1.Color;
}
//插入图片
private void ToolStripButton12_Click(object sender, EventArgs e)
{
string imgFile;
if (OpenFileDialog2.ShowDialog() == DialogResult.OK)
imgFile = OpenFileDialog2.FileName;
else
return;
Bitmap bmp;
try
{
bmp = (Bitmap)Image.FromFile(imgFile);
Clipboard.SetDataObject(bmp);
DataFormats.Format MyFormat = DataFormats.GetFormat(DataFormats.Bitmap);
if (RichTextBox1.CanPaste(MyFormat))
RichTextBox1.Paste(MyFormat);
}
catch( Exception ex)
{
MessageBox.Show("插入图片时发生错误");
}
}
//新建文件
private void 新建文件NToolStripMenuItem_Click(object sender, EventArgs e)
{
RichTextBox1.Text = "";
}
//载入文件
private void 载入文件LToolStripMenuItem_Click(object sender, EventArgs e)
{
if (OpenFileDialog1.ShowDialog() == DialogResult.OK)
RichTextBox1.LoadFile(OpenFileDialog1.FileName);
}
//保存文件
private void 保存文件SToolStripMenuItem_Click(object sender, EventArgs e)
{
if (SaveFileDialog1.ShowDialog() == DialogResult.OK)
RichTextBox1.SaveFile(SaveFileDialog1.FileName);
}
//剪切
private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)
{
Clipboard.SetData(DataFormats.Rtf, RichTextBox1.SelectedRtf);
RichTextBox1.SelectedText = "";
}
//复制
private void 复制CToolStripMenuItem_Click(object sender, EventArgs e)
{
Clipboard.SetData(DataFormats.Rtf, RichTextBox1.SelectedRtf);
}
//粘贴
private void 粘贴PToolStripMenuItem_Click(object sender, EventArgs e)
{
RichTextBox1.SelectedRtf = (string)Clipboard.GetData(DataFormats.Rtf);
}
//关于
private void 关于AToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("这是一个富文件编辑器,可以编辑RTF文档。", "富文本编辑器", MessageBoxButtons.OK);
}
//退出
private void 退出XToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
//鼠标按下时判断所在行数,修改到状态栏
private void RichTextBox1_MouseDown(object sender, MouseEventArgs e)
{
int allLines;
int curLines;
allLines = RichTextBox1.GetLineFromCharIndex(RichTextBox1.TextLength) + 1;
curLines = RichTextBox1.GetLineFromCharIndex(RichTextBox1.SelectionStart) + 1;
ToolStripStatusLabel1.Text = "总 " + allLines + "行 " + "第 " + curLines + "行 ";
}
运行结果如下图所示:
图8-109 使用Rtf文件编辑器编辑文档
学习更多vb.net知识,请参看vb.net 教程 目录
学习更多C#知识,请参看C#教程 目录