8.8.2 Rtf文件编辑器

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的

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#教程 目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.Net学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值