收藏 分享(赏)

多文档编辑器实验报告.doc

上传人:tangtianxu1 文档编号:2924135 上传时间:2018-09-30 格式:DOC 页数:12 大小:1.03MB
下载 相关 举报
多文档编辑器实验报告.doc_第1页
第1页 / 共12页
多文档编辑器实验报告.doc_第2页
第2页 / 共12页
多文档编辑器实验报告.doc_第3页
第3页 / 共12页
多文档编辑器实验报告.doc_第4页
第4页 / 共12页
多文档编辑器实验报告.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、多文档编辑器一、 实验要求1 参考系统提供的写字板功能,编写一个小型的文字编辑工具2 对该文档编辑器,至少完成以下功能:文件:(新建、打开、保存、退出)编辑:(复制、剪切、粘贴、全选)格式:(自动换行、字体、颜色),格式的设置功能要区分是设置当前块的格式还是设置所有内容的格式;界面设计时应有工具栏,弹出菜单,状态栏等功能来提高操作的便利性;二、 设计思路本实验是实现一个多文档编辑器,支持txt文件,一共包含四个文件,其中文件 Form1.CS用于实现写字板的主界面框架,Form2.CS 用于实现写字板的主要功能,FormPageSetting 用于实现页面设置的对话框,aboutMyForm用

2、于实现显示一共 “关于”对话框。1 界面设计本实验主表单中使用的界面元素及其属性设置如表1-1所示:表1-1 主表单Form1 中使用的界面元素及其属性设置组件 属性 设置Form1 TextIsMdiContainForm1TruemenuStrip name menuStrip1toolStrip NameDockmenuStrip1TopstatusStrip Name statusStrip1openFileDialog Filter “txtfiles(*.txt)|*.txt|rtf files(*.rtf)|*.rtf|All files(*.*)|*.*“saveFileDia

3、log Filter “txtfiles(*.txt)|*.txt|rtf files(*.rtf)|*.rtf|All files(*.*)|*.*“表1-2 Form2上的控件对象的主要属性设置组件 属性 设置Form2 Text Form2richTextBox1 Dock Fill本实验的主界面如图所示:2 新建文件程序运行后,如果用户单击菜单项“新建”,则将新建一个文件,实现这一功能的源程序如下:private void NewToolStripMenuItem_Click(object sender, EventArgs e)/在Form1.cs上Form2 mdiChildFor

4、m = new Form2();count+;mdiChildForm.Text = “MdiChildForm“ + count.ToString();mdiChildForm.MdiParent = this;mdiChildForm.Show();status.Text = “新建文件“;3 打开文件该功能的实现首先是调用openFileDialog对象的showDialog方法,该方法执行成功后将弹出一个标准的打开文件对话框,用户可以在该对话框中指定一个txt格式的文件作为 richTextBox组件打开的文档。如果用户单击OK按钮从对话框中返回后,在openFileDialog对象的

5、FileName属性中,记录下用户在对话框中选择的文件的文件名。public void openfile(string filename) tryrichTextBox1.LoadFile(filename, RichTextBoxStreamType.PlainText);/在Form2.cs上catch (Exception) MessageBox.Show(“文件不存在或读写错误“); private void open()if (this.openFileDialog1.ShowDialog() = DialogResult.OK)string fname = openFileDial

6、og1.FileName;/ActiveMdiChild表示MDI窗体的当前活动子窗体,类型为Form.Form2 childForm = (Form2)this.ActiveMdiChild;if (childForm = null)childForm = new Form2();childForm.MdiParent = this;childForm.Text = fname;childForm.Show();childForm.openfile(fname);4 保存文件该功能的实现首先是调用saveFileDialog对象的showDialog方法,该方法执行成功后将弹出一个标准的打开

7、文件对话框,用户可以在该对话框中指定richTextBox的文档的文件格式为txt,以及文件名和存储路径。如果用户单击OK按钮从对话框中返回后,该文件就保存成功了。public void savefile()if (saveFileDialog1.ShowDialog() = DialogResult.OK)richTextBox1.SaveFile(saveFileDialog1.FileName,RichTextBoxStreamType.PlainText); /将richtextbox内容保存到RTF格式文件5 编辑操作为了实现文档编辑器的剪切、复制、粘贴、重复、撤销、全选、清除等功能

8、,调用了richTextBox类的一些主要方法:public void cut() /剪切 richTextBox1.Cut(); public void copy()/复制 richTextBox1.Copy(); 下面的paste()程序首先调用Clipboard类的GetDataObject方法获得当前保存在剪贴板中的数据,并将这些数据保存在变量l_objClipboard对象中。GetDataObject方法的原型定义如下所示:public static IDdataObject();然后调用l_objClipboard对象的GetDataParesent方法来判断当前保存在剪贴板上的

9、数据剪贴到richTextBox组件中。L_objclipboard对象的GetDataPresent方法的原型定义如下:bool GetDataPresent(Type Format);public void paste() /粘贴IDataObject l_objClipboard = Clipboard.GetDataObject();if (l_objClipboard.GetDataPresent(DataFormats.Bitmap) = true)richTextBox1.Paste(DataFormats.GetFormat(DataFormats.Bitmap);else i

10、f (l_objClipboard.GetDataPresent(DataFormats.Text) = true)richTextBox1.Paste(DataFormats.GetFormat(DataFormats.Text);else if (l_objClipboard.GetDataPresent(DataFormats.Dib) = true)richTextBox1.Paste(DataFormats.GetFormat(DataFormats.Dib);public void undo() /撤销 richTextBox1.Undo(); public void redo()

11、 /重复 richTextBox1.Redo(); public void selectAll() /全选 richTextBox1.SelectAll(); public void duanluo()/段落设置richTextBox1.SelectionIndent = 30; /首行缩进30 PixelsrichTextBox1.SelectionHangingIndent = -20; /第二行以后左缩进10 PixelsrichTextBox1.SelectionRightIndent = 10;/ 右缩进10 Pixelsprivate void DeltoolStripButton

12、1_Click(object sender, EventArgs e)Form2 childForm = (Form2)this.ActiveMdiChild;childForm.clear();status.Text = “清除文档内容“;6 格式化文档本实验还可以对richTextBox组件中的文档进行简单的格式处理。比如设置字体以及字体颜色等。本实验设置字体的操作是通过如下程序来实现的:设置字体的操作是通过Windows 的标准字体对话框来实现的,用户在该对话框中指定的字体将保存在fontDlg对象的Font 属性中。改程序代码如下:public void font()FontDialo

13、g fontDlg = new FontDialog();fontDlg.ShowColor = true;fontDlg.Font = richTextBox1.Font;fontDlg.Color = richTextBox1.ForeColor;if (fontDlg.ShowDialog() = DialogResult.OK)richTextBox1.SelectionFont = fontDlg.Font;/ richTextBox1.Font = fontDlg.Font;richTextBox1.ForeColor = fontDlg.Color;设置字体颜色的操作是通过Win

14、dows的标准字体颜色对话框来实现的,用户在该对话框中指定的字体颜色将保存在colorDlg对象的Color属性中。改程序代码如下:public void color()ColorDialog colorDlg = new ColorDialog();colorDlg.AllowFullOpen = true;colorDlg.Color = Color.Red;if (colorDlg.ShowDialog() = DialogResult.OK)/richTextBox1.ForeColor = colorDlg.Color;richTextBox1.SelectionColor = co

15、lorDlg.Color;7 帮助菜单本实验的帮助菜单很简单,它只有一个菜单项,用于弹出一个关于对话框。该对话框是由组件Form和label组成的。其中Form的FormBorderStyle属性更改为“FixedDialog”,通过BackgroundImage属性导入图片;而label的Font属性更改为“华文行楷, 42pt”,Text属性写为“C#多文档编辑器”。因此,该菜单项的对话框如图:8 工具栏工具栏用于实现一些比较常用的操作,它实际上相当于菜单命令的一种快捷方式。工具栏中的每个按钮组成了一个集合。每个按钮都拥有一个ClickedItem属性,因此程序通过判断该属性的值就可以知道

16、该用户单击的按钮究竟是哪一个按钮,然后调用相应的方法进行处理。本实验通过如下程序来实现工具栏的功能:private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)if (e.ClickedItem = 新建NToolStripButton)NewToolStripMenuItem_Click(sender, e);if (e.ClickedItem = 打开OToolStripButton)OpenToolStripMenuItem_Click(sender, e);if (e.Clicke

17、dItem = 保存SToolStripButton)SaveToolStripMenuItem_Click(sender, e);if (e.ClickedItem = 打印PToolStripButton)PrintToolStripMenuItem_Click(sender, e);if (e.ClickedItem = 剪切UToolStripButton)CutToolStripMenuItem_Click(sender, e);if (e.ClickedItem = 复制CToolStripButton)CopyToolStripMenuItem_Click(sender, e);

18、if (e.ClickedItem = 粘贴PToolStripButton)PasteToolStripMenuItem_Click(sender, e);if (e.ClickedItem = 帮助LToolStripButton)关于AToolStripMenuItem_Click(sender, e);if (e.ClickedItem=撤消toolStripButton1)UndoToolStripMenuItem_Click(sender,e);if (e.ClickedItem = 恢复toolStripButton2)RedoToolStripMenuItem_Click(se

19、nder,e);if (e.ClickedItem = toolStripButton1) duanluoToolStripMenuItem_Click(sender, e);9 查找和替换查找和替换的实现是直接放在工具栏上,该查找是从当前光标位置上逐个向下查找,每单击一次“查找”就查找一个;而替换操作时从当前光标位置上逐个向下全部替换。实现代码如下:private void tbtnSearch_Click(object sender, EventArgs e)Form2 childForm = (Form2)this.ActiveMdiChild;string str1;str1 = tt

20、xtSearch.Text;if (str1.Length = 0) return;childForm.search2(str1);public void search2(string str1)start = richTextBox1.Find(str1, start, RichTextBoxFinds.MatchCase);if (start = -1)MessageBox.Show(“已查找到文档的结尾“, “查找结束对话框“);start = 0;else start = start + str1.Length;richTextBox1.Focus();10 打印、打印预览和页面设置p

21、ublic void miPrintPreview()/ status.Text = “打印预览“;PrintPreviewDialog ppd = new PrintPreviewDialog();ppd.PrintPreviewControl.Document = pd;ppd.ShowDialog(this);public void miPrint()PrintDialog dlg = new PrintDialog();dlg.AllowPrintToFile = true;dlg.AllowSelection = true;dlg.AllowSomePages = true;dlg.

22、Document = pd;if (dlg.ShowDialog() = DialogResult.OK)pd.Print();public void miPageSetting()/ status.Text = “页面设置“;/ 创建并显示页面设置对话框FormPageSetting ps = new FormPageSetting();if (ps.ShowDialog(this) = DialogResult.OK)/ 如果返回确定/ 根据对话框中输入的页边距设置打印文档的页边距pd.DefaultPageSettings.Margins =new Margins(int.Parse(p

23、s.txtLeft.Text),int.Parse(ps.txtRight.Text),int.Parse(ps.txtTop.Text),int.Parse(ps.txtBottom.Text);/ 设置打印文档的页面大小PrinterSettings.PaperSizeCollection sizes =ps.pd.PrinterSettings.PaperSizes;for (int i = 0; i sizes.Count; i+)if (ps.cbxSize.Text = sizesi.PaperName)pd.DefaultPageSettings.PaperSize = size

24、si;break;/ 设置打印文档的纸张来源PrinterSettings.PaperSourceCollection sources =ps.pd.PrinterSettings.PaperSources;for (int i = 0; i sources.Count; i+)if (ps.cbxSource.Text = sourcesi.SourceName)pd.DefaultPageSettings.PaperSource = sourcesi;break;/ 设置打印文档的打印方向if (ps.rbVert.Checked)pd.DefaultPageSettings.Landsc

25、ape = false;elsepd.DefaultPageSettings.Landscape = true;三、 程序运行效果图运行本实验后,首先弹出主界面(前面有显示),这是选择“文件”菜单下的“打开”命令就可以打开选中在openFileDialog组件中的文档,或者选择“新建”命令就可以新建一个空的文档。如图所示(注:保存操作与打开操作类似,这里不显示了)选择窗口的“垂直平铺”命令,就可以排放多个文档的顺序,如下图所示:(注:除了“垂直平铺”外,还有“成叠”和“水平平铺”来摆放多个文档的位置,以及“关闭所有子窗口”命令来关闭所有子窗口,和“窗口列表”来显示所有文档的文件名。这里不一一显示了)“查找”操作是在工具栏上的文本框输入想查的字,然后单击“查找”就会查找一次,如下图:“替换”操作是在工具栏上的文本框输入想替换的字和被替换的字,然后单击“替换”就会全部被替换,如下图:字体颜色和字体的设置会各自调用如下的对话框:该文字编辑器可以设置文本的字体、样式和颜色,如下图:选择其他的菜单项,还可以执行其他相关的操作,这里就不赘述了。四、实验总结这次实验中,我选择的是实现多文档编辑器。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 农林牧渔

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报