版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、XX 大学 C#.NET课程考试设计题目多文本编辑器的设计起止日期2008 -2009学年第1学期课程名称C#.NET语言程序设计设计成员 及各自的 工作说明院系计算机系班级人员组成及各自工作说明:学号姓名主要工作说明成绩整个程序的设计及完成设计内容综合运用Visual C#.NET提供的标准控件,模仿 Window中的记事本和写 字板的功能,自己设计一个多文档编辑工具。评 语 与 成 绩项目/成绩优良中及格不及格系统分析设计口程序设计水平口内容完成情况口设计报告撰写质量口课程设计总结情况口附加说明:综合成绩: 指导教师年 月日一、题目:多文本编辑器的设计二、设计要求:用C#的可视化环境通过制
2、作一个RichTextBox这样一个文本编辑器,熟悉在可视化环境下编程,并且学会使用里面提供的一些组装好的一些工具,三、设计思路及代码:第一是:新建一个 RichTextBox,然后我最先想到的就是遨游里的选项卡非常好用而且人性化,怎么 制作这样一个选项卡,怎么把 RichTextBox放到里面,我就了解了 TabControl工具并且最先想到的是用RichTextBox数组,每个选项卡分配一个RichTextBoxi,但是当关闭选项卡时就遇到问题了,不知道选项卡最后对应的是哪一个RichTextBoxi,然后就想出了把RichTextBox封装在选项卡里的想法,为了记录文件路径和文件是不是已
3、经保存的状态,我顺便封装两个Label进去,因为要用到他们的text()属性记录这些信息,我们只对当前选项卡操作,首先用foreach语句获取选项卡里的控件类型,再进行相应操作。这样最后解决了窗口关闭问题,以及新建窗口个数有限性的问题,我的这个程序理论上是可以 新建无数多个窗口的,就看你内存如何了。代码如下:(文件打开的功能也差不多)private void 新建 ToolStripMenultem_Click(object sender, EventArgs e)stri ng str = "NewText" + (NF+); 获取选项卡名字tabControl1.Tab
4、Pages.Add(str); 增加选项卡tabControl1.SelectTab(m+); 当前页转到下一页tabControl1.TabStop = true;/ 允许 tab键顺序RichTextBox r= new RichTextBox();r.ContextMenuStrip = contextMenuStrip2; 增加右键菜单 r.TextChanged += new EventHandler(Form1_TextChanged);/ 文本内容发生改变时执行的函数 r.Dock = System.Wi ndows.Forms.DockStyle.Fill;r.Locati o
5、n = new System.Draw in g.Po in t(0, 0);Label l1 = new Label();11. Text = str;/ 保存路径Label l2 = new Label();12. Text ="新建"v+;/保存文件是不是保存的状态11. Dock = System.Wi ndows.Forms.DockStyle.Bottom;12. Dock = System.Wi ndows.Forms.DockStyle.Bottom;tabCo ntrol1.SelectedTab.Co ntrols.Add(r);tabCo ntrol1
6、.SelectedTab.Co ntrols.Add(H);tabControl1.SelectedTab.Controls.Add(l2);圭寸装进去,注意句柄丢了,这样做到与选项卡一一对应。RichTextBox 添加一第二是:当 RichTextBox的文本改变时,要改变文本是否保存的状态,这要给 个 TextChanged 处理函数 Form1_TextChanged(object sender, EventArgs e):14 / 13void Form1_TextCha nged(object sen der, Even tArgs e)获得控件r、11、12 (第十设计思路)if
7、 (l2.Text ="已保存"| l2.Text ="打开") l2.Text ="未保存"v+; toolStripButto n3.E nabled = true;保存 SToolStripMenultem.Enabled = true; else if (l2.Text ="打开 1")l2.Text ="打开"toolStripButto n3.E nabled = false;保存 SToolStripMe nultem.E nabled = false;else toolStrip
8、Button3.Enabled = true; 保存 SToolStripMe nultem.E nabled = true;第三是:当选项卡相互切换时,也有一些事情要处理的,比如说在一个选项卡里未保存文本,保存按 钮需要保持可用状态,但是当切换到另一个选项卡时可能它是已经保存的,保存按钮继续保持不可用状态, 这需要一些判断和处理,当然还有其他一些操作:private void target(object sender. EventArgs e) 窗口切换/获得选项卡里的控件,r为RichTextBox ,11为路径栏,12为保存提示栏if (12 != null)if (2Text =&qu
9、ot;已保存"| 2Text ="打开")保存 SToolStripMenultem.Enabled = false; toolStripButto n3.E nabled = false;else保存 SToolStripMenultem.Enabled = true; toolStripButto n3.E nabled = true;if (fc > 0) 查找下一个 NToolStripMenultem.Enabled = true;else 查找下一个 NToolStripMenultem.Enabled = false;if (r.Ca nUn
10、do) 撤消 ToolStripMe nultem.E nabled = true;else 撤消 ToolStripMe nultem.E nabled = false;if(l1!=null && 12!=null)if (隐藏路径 ToolStripMenultem.Checked = true) l1.Hide();else l1.Show();if (隐藏保存提示栏 ToolStripMenultem.Checked = true) l2.Hide(); else l2.Show();第四是:当选项卡关闭时也有一些处理,比如说文本没有保存的话要给用户一个保存修改的机会
11、,要 实现像遨游那样双击可以关闭,我设置了双击函数,并且选项卡的右键菜单的关闭选项的处理也直接使用 这个双击函数,主要实现关闭选项卡的功能,但是为了使用户操作,我至少要有一个选项卡留在窗口不能 关闭,所以最后一个选项卡不能关闭的:void tabC on trol1_DoubleClick(object sen der, Even tArgs e)获得选项卡里的控件,r为RichTextBox , l1为路径栏,l2为保存提示栏if (m > 1)/当窗口数量 m > 1时才执行关闭功能if (l2.Text ="已保存"| l2.Text ="打开&
12、quot;) tabCo ntrol1.SelectedTab.Dispose();m-;else string message, title; DialogResult result;/文本需要保存时要给出提示信息对话框 message ="窗口正在关闭 nn但是文本未被保存! nn是不是执行保存?"title ="提醒你"butt on = MessageBoxButt on s.YesNoCa ncel;icon = MessageBoxlc on.Warning;result = MessageBox.Show(message, title, b
13、utt on, icon);if (result.ToStri ng() = "Yes")保存 SToolStripMenultem_Click(sender, e); tabControl1.SelectedTab.Dispose(); m-; else if (result.ToStri ng() = "No") tabCo ntrol1.SelectedTab.Dispose(); m-; else /end else/end if (m > 1)第五是:字体的设置,考虑要先获得所选文本的字体,要体现人性化智能化:(颜色的设置也差不多)pri
14、vate void 字体 ToolStripMenultem_Click(object sender, EventArgs e)/获得选项卡里的控件,r为RichTextBox ,11为路径栏,12为保存提示栏f = new Fon tDialog(); f.ShowColor = true; f.ShowApply = true; /下面添加一个处理函数f.Apply += new Even tHa ndler(f_Apply); f.Scripts Only = true; f.ShowEffects = true;f.ShowHelp = true; f.AllowVerticalF o
15、nts = true; f.Color = r.Selecti on Color; f.Font = r.Select ionFont; f.ShowDialog(); r.Select ionFont = f.Font;r.Select ion Color = f.Color;void f_Apply(object sen der, Even tArgs e)/当字体对话框的应用按钮被按下时发生/获得选项卡里的控件,r为RichTextBox ,11为路径栏,l2为保存提示栏r.Select ionFont = f.Font;r.Select ion Color = f.Color;r.Fo
16、cus();第六是:查找对话框的制作,说了这个其实替换对话框就不要说了:private void findFun 1(object sen der, Even tArgs e) /执行向下查找的功能,fs=0表示没有选择文本,否则选择了文本/获得选项卡里的控件,r为RichTextBox ,11为路径栏,l2为保存提示栏if (r.SelectedText .Len gth = 0) fs = 0; stri ng str1 = fin d.textBox1.Text; if (str1 .Length = 0) return;if (fs = 0) start = r.Selectio nS
17、tart-1; fs = 1; else start = r.Selecti on Start; if (start = r.Text.Le ngth - 1) start-; start = r.Fin d(str1, start + 1, RichTextBoxF in ds.MatchCase);f (start = -1)MessageBox.Show(”已查找到文档的结尾!","查找结束对话框");else fs = 1; r.Focus();private void findFun2(object sender, EventArgs e) /执行向上查
18、找的功能,fs=0表示没有选择文本/获得选项卡里的控件,r为RichTextBox , l1为路径栏,l2为保存提示栏int q, n,l; if (r.SelectedText.Le ngth = 0) fs = 0; stri ng str1 = fin d.textBox1.Text;if (str1.Le ngth = 0) retur n; start = r.Select ion Start; q = 0; l = 0; n = -1;while (n < start) if (fs > 0 && n >= 0) q = n; else q = s
19、tart; l-; n = r.Fi nd(str1, n + 1, RichTextBoxFi nds.MatchCase);if (n >= start&&fs=0) r.Selectio nLe ngth=0; l-; if (r.TextLe ngth = 0) l-; break; fs = 1; l+;if (start = 0) l = 0; if (n = -1) break;if (l < 1) MessageBox.Show(” 已查找到文档的开头!","查找结束对话框");r.SelectionStart = st
20、art; else.Select ion Start = q;r.Focus();/函数结束private void fin dClose(object sen der, Even tArgs e)/执行关闭查找对话框的功能,有些数据需要重置fc = 0; 查找下一个 NToolStripMenultem.Enabled = false; find.Close();private void 查找 FToolStripMenultem_Click(object sender, EventArgs e)if (fc = 1) fin d.Close(); fin d=new Form2(); fc
21、 = 1; /查找对话框的数目为1/如果已经存在查找对话框则关闭前一个,永远保持只有一个对话框给用户操作查找下一个 NToolStripMenultem.Enabled = true; find.button3.Click += new EventHandler(findFun1); fin d.butto n2.Click += new Even tHa ndler(fi ndFu n2);添加查找对话框按钮的处理函数,在上面fin d.butto n1.Click += new Even tHa ndler(fi ndClose); fin d.Show();第七是:获得系统时间 ->
22、; r.SelectedText = DateTime.Now.ToStri ng();第八是:保存文件,另存为,这里列举保存的代码:private void 保存 SToolStripMenultem_Click(object sender, EventArgs e)获得选项卡里的控件,r为RichTextBox , 11为路径栏,l2为保存提示栏if (l2 != null)if (l2.Text ="新建")/比较特殊,因为没有保存路径所以需要与用户进行对话 SaveFileDialog save = new SaveFileDialog(); save.Defaul
23、tExt = "*.rtf" save.Filter = "*.rtf | *.rtf"if (save.ShowDialog() = DialogResult.OK && save.FileName.Le ngth > 0)r.SaveFile(save.FileName); l2.Text ="已保存"v-; l1.Text = save.FileName; tabCo ntrol1.SelectedTab.Text = Syste m.I O.Path.GetFileName(save.FileName);
24、else if (l2.Text ="未保存") r.SaveFile(l1.Text); l2.Text ="已保存"v-;if (l2.Text ="打开") 2.Text ="已保存"toolStripButton3.Enabled = false; 保存 SToolStripMenultem.Enabled = false;/ 保存按钮不可用第九是:退出程序时的处理:(没有保存的文件需要和用户进行对话,确定保存与否)private void 退出 ToolStripMenultem_Click(object
25、 sender, EventArgs e)if (v > 0) /其中v是未保存文本的记数数量,有未保存的文本需要和用户取得对话 string message, title; DialogResult result; title ="提醒你"icon = MessageBoxlcon.Warning; message ="窗口正在关闭 nn但是文本未被全部保存! nn是不是全部执行保存 ?";butt on = MessageBoxButt on s.YesNoCa ncel; result = MessageBox.Show(message, t
26、itle, butt on, icon); if (result.ToStri ng() = "Yes") for (int count = 0; count < m;co un t+ ) RichTextBox r = null; Label l1 = null, l2 = n ull; tabCo ntrol1.Selectedl ndex = count;获得选项卡里的控件,r为RichTextBox ,11为路径栏,l2为保存提示栏if (l2 != null && (l2.Text =" 未保存"| l2.Text =&q
27、uot;新建")保存 SToolStripMe nultem_Click(se nder, e);/end for this.Close();/end result.ToStri ng() = "Yes"else if (result.ToStri ng() = "No") this.Close(); / endresult.ToStri ng() = "No"else /取消动作/end if (v > 0)else this.Close(); /如果没有未保存的文本则直接关闭不需要提醒用户第十是:获得选项卡里的控件
28、,r为RichTextBox ,11为路径栏,12为保存提示栏,这样就差不多解决了整个程序了,因为程序的基本框架已经呈现了:RichTextBox r = n ull;Label l1 = n ull, 12 = n ull;foreach (Con trol c in tabC on trol1.SelectedTab.C on trols)if (c is RichTextBox)r = (RichTextBox)c;if (c is Label)if (l1 = null) l1 = (Label)c;else if (l2 = n ull) l2 = (Label)c;第是:获得绝对路
29、径下的文件名,save.FileName是绝对路径tabCo ntrol1.SelectedTab.Text = System.I O. Path.GetFileName(save.FileName); 第十二是:当按钮可用时要设置为true属性:(否则设为 flase)复制 CToolStripMenultem.Enabled = true; 查找 FToolStripMenultem.Enabled = true; 转至U ToolStripMenultem.Enabled = true; 时间与日期 ToolStripMenultem.Enabled = true; 段落 ToolStr
30、ipMe nultem.E nabled = true;颜色 AToolStripMe nultem.E nabled = true;另存为 AToolStripMenultem.Enabled = true; 剪切 TToolStripMenultem.Enabled = true; 删除 ToolStripMe nultem.E nabled = true; 替换 ToolStripMe nultem.E nabled = true; 全选 ToolStripMe nultem.E nabled = true; 字体 ToolStripMe nultem.E nabled = true;
31、主题 HToolStripMenultem.Enabled = true;toolStripButt on4.En abled = true; toolStripButt on 5.E nabled = true; toolStripButt on 7.E nabled = true; toolStripButt on 8.E nabled = true; toolStripButto n9.E nabled = true; toolStripButt on 10.E nabled = true; 第十三是:变量的说明:(定义了几个全局变量下面分别说明)m是选项卡个数,动态变化int NF =
32、 1,m=0,v=0; NF是记数新建文件的次数,只加不减, / v是需要进行保存的选项卡个数,也是动态变化的一个值 private MessageBoxButt ons butt on;/退出时提示对话框的按钮风格 private MessageBoxlcon icon; /退出时提示对话框的图标风格FontDialog f; /字体对话框,因为两个函数共用它所以设为全局变量Form2 find; int start=0 , fc = 0,fs=0;/查找对话框,start是被选择的文本在RichTextBox中的位置,/ fc是在工作中查找对话框的个数,fs=O表示没有选择文本,否则选择了
33、文本Form3 tiH = null;/替换对话框四、实验效果图:1、选项卡可以双击关闭,也可以在右键菜单里选择关闭选项来关闭,如图:2、字体设置,弹岀的对话框自动获得字体的属性,并显示,而且实现应用功能:U丨回丨埜1I-Of不四 小五.S 号U口3、颜色对话框的设置和字体对话框差不多,都是能自动获得所选择字体的颜色并在对话框里体现:文件(日編辑(目格式 帮助凹=sns.园i iifeoi ££i yri Sss-iniua 佶除levTextl kans.oHe. rtfL r 厂 刃厂厂 驰厂厂 辱自定文额色(£):规定自定交额色辺)»颤色I死色Q)
34、亮度©: 6口蓝:口确定取消 帮助理添加劉自定义额色®4、主题是改变背景色,在格式里选择主题,定义背景色:文件(日 錦辑 格式 帮肋(出d矗建占血Hi亀曲冰鑒切H电T ex tlkansoae. rtfheiio world !基本驗色(1:确定取梢str &t or車面 Vkans obckukE oae. t t£書仔体©眈inuig脅証 :口 !_ L厂 !_ = 自定义硕色©:规定自走义顏色0»C : DocnAeut E andl Set tingsAda ini5、查找对话框实现了界面置顶,当查找到文本头或尾时将提示并不循环查找元素:6、替换对话框也设置了置顶功能,不过在岀现提示“替换完毕!”时会暂时失去置顶效果,这是界面的要求:a 回文件(已编辑(目格式©帮助(也矗建 行扛旺 H保蛊亀复n就翅 rK 1创壬住 ®as芭iiiyg 礎MewT exheiio world &&&&* ±旧文本:新文本二替换取消C" iD>oh. tk.n<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年版影视制作与发行合同
- 美业门店培训课程设计
- 英语加国学课程设计理念
- 感觉统合课程设计大班
- 油画初学者 课程设计
- 2024政法干警考试复习资料
- 系统动力学课程设计总结
- 深圳市政府投资交通建设项目管理模式-第二册
- 大班社会签到课程设计
- 2024年羽绒家纺销售岗位职责(共8篇)
- 住友(SWS)汽车连接器(Connectors)产品配套手册
- 办公楼室内装饰工程施工设计方案技术标范本
- 2023年香港华夏杯六年级竞赛初赛数学试卷
- 高中数学放缩法
- 上海市闵行区2024-2025学年八年级(上)期末物理试卷(解析版)
- 2024年国考行测真题-言语理解与表达真题及完整答案1套
- 人教版三年级上册数学期末测试卷可打印
- 医疗高级职称评审论文答辩
- 设计服务保障措施方案
- 软件测试方案模板(完整版)
- 建筑幕墙工程(铝板、玻璃、石材)监理实施细则(全面版)
评论
0/150
提交评论