《c#文本编辑器课程设计.doc》由会员分享,可在线阅读,更多相关《c#文本编辑器课程设计.doc(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datec#文本编辑器课程设计苏 州 市 职 业 大 学摘要:这个课题是一个关于文本编辑器的小程序,运用一些简单的记事本的基本操作功能来实现的。该程序利用C#程序编写,在Visual Studio 2005的环境下进行调试运行的。对于该程序开发,必须达到以下要求:1、熟悉.NET开发环境,能够使用C#语言在.NET平台上独立设计、开发WINDOWS应用程序。2、掌握C#语言的
2、异常处理技术,能够使用.NET各种调试方法调试代码,掌握帮助的使用方法。3、掌握常用控件以及控件的常用属性的使用方法。4、界面要做到简洁易懂,具有人性化等特点。5、程序没有在使用过程中不存在任何的问题。目 录摘要:5一、采用技术61. visual studio 2005编辑环境62.C#的窗体编程编程7二、选题说明7三总体说明81.程序的基本结构82.程序的主要技术8四详细说明91. 界面设计9五遇到的问题和解决方法12六心得体会12七参考文献13八 部分程序代码13一、采用技术1. visual studio 2005编辑环境Visual Studio 是微软公司推出的开发环境。是目前最流
3、行的 Windows 平台应用程序开发环境。目前已经开发到 8.0 版本,也就是 Visual Studio 2005。 Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。Visual Studio 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C+、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可
4、以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键技术。2.C#的窗体编程Windows 窗体是用于 Microsoft Windows 应用程序开发的、基于 .NET Framework 的新平台。此框架提供一个有条理的、面向对象的、可扩展的类集,使您能够开发功能丰富的 Windows 应用程序。另外,Windows 窗体可作为多层分布式解决方案中的本地用户界面。窗体是一种文档,可以用来收集信息。它包括两部分,一部分是由窗体设计者输入的,填写窗体的人
5、无法更改的文字或图形。窗体设计者可以插入希望得到回答的问题、选项列表、信息表格等。另一部分是由窗体填写者输入的,用于从填写窗体者处收集信息并进行整理的空白区域。窗体设计者可以在文档中插入窗体域或 ActiveX 控件,为窗体填写者提供用于收集数据的位置。二、选题说明随着科技的发展,人们对精神生活要求的越来越高,纸质的手动式的书写方式已经不是能够代表新世纪的生活需要了,所以现在各种不同功能的文本编辑器已经悄悄走进我们的生活和学习中,像简单的就有记事本。 但是一个简单的文本编辑器也是很重要的,是基础。所以在结合自己的一个学期的很认真的学习c#后,决定自己编译一个类似与记事本的,但功能比记事本强大的
6、文本编辑器。三总体说明1. 程序的基本结构操作界面的主窗口为文本编辑器的主入口,类似于记事本的形式,菜单栏要如下的几项(),另外还有两个简单的toolstripe式的图片按钮,分别是新建和保存。当点击新建的时候,会弹出我们将要编辑的文档文本窗口,这是我们编写文字的地方。书写完毕后,要先确认是否保存此文件夹,这样就不会发生自己所编辑的内容会丢失。2. 程序的主要技术 (1)编写要先新建,编写之后要有保存功能; (2)基本的操作功能如,复制、粘贴、剪切、撤销等;(3)还可以设置文字的字体字形和字体的颜色。四详细说明1. 界面设计打开Visual Studio 2005开发工具,新建一个Window
7、s应用程序,然后在窗体上依次放置1个MenuStrip菜单栏和1个ToolStrip工具栏,如图4-1所示(设置好属性后)。图4-1 编辑器用户界面运行程序,新建文档。如图4-2所示。图4-2新建文本文档运行程序,设置字体的大小和粗细,以及字体的颜色。如图4-3所示图4-3 字体大小及颜色单击保存按钮,保存所编辑的文本。结果如图4-4所示。图4-4 保存文本单击文件按钮,能够实现如下的功能,结果如图4-5所示。图4-5 菜单文件的功能单击编辑按钮,功能如下,结果如图4-6所示图4-6 菜单编辑的功能五遇到的问题和解决方法问题1:未考虑到生成文档窗体在主窗体中的显示解决办法:在参照样例程序的时候
8、,发现文档是显示在主窗体内部,结合自己的所学,发现设置主窗体的属性记事本 f = new 记事本(); f.MdiParent = this; count+; f.Text = 新建文本 + count;设置成Mdiparent属性即可。问题2:不知到什么属性被修改,导致主窗体关闭失效解决办法:在菜单文件中设置关闭程序的命令,并申请了菜单合并,不需要在新建文档的情况下就能关闭主窗体,现在仍然留下一个让人深究的问题,究竟是什么样的属性才是控制最大化,最小化,以及关闭的显隐性,有待继续学习。这是自己在程序完成的时候出现的意外,但是确是我在编写过程中遇到的最大难题。问题3:未考虑到文档关闭时,文档是
9、否保存解决办法:这是细节问题,其实是很容易做到,当关闭的时候显示一个对话框提示一下即可。 六心得体会通过本次的课程设计,让我学会了把书本上的知识用到了实际中来。虽然在这一周中一直沉浸在课程设计中,有的问题一直到了最后才被解决,虽然现在还留有一个问题,但是我认为这未必就不是好事,它的存在激发了我继续深入学习c#开发程序的热情,我会更加努力的去探索,去深入的剖析。这样能锻炼我的意志,磨练我的耐心,失败是成功之母,这话一点都没错,没有失败就没有成功。让我没有失去信心的是关怀我们的老师,当我们有了问题和疑问,老师就很耐心的给予讲解,让我们有了一个良好的学习氛围。当然同学之间的互相帮助也是不容护忽视的,
10、同时也证实了那句话“团结就是力量”。还有让我学会了利用c#的windows程序可以做出这样的小系统,以前只会用c#编写控制台程序,现在让我懂得了如何利用c#来编写窗体代码,我很开心。回顾此次课程设计感觉收获很大,不仅巩固了以前所学的知识,而且学到了很多书本上学不到的东西。通过这次课程设计使我们懂得了理论和实际相结合的重要性,只有把理论与实际相结合,从理论中得出结论,才能真正为社会服务。七参考文献1郑阿奇、梁敬东、钱晓军等,c#实用教程,电子工业出版社,2009年2 钱雪忠、黄学光等,数据库原理及应用,北京邮电大学出版社,2005年.八部分程序代码private void 格式ToolStrip
11、MenuItem_Click(object sender, EventArgs e) /通过“新建”菜单项添加子窗口 private void 新建ToolStripMenuItem_Click(object sender, EventArgs e) /创建子窗体 记事本 f = new 记事本(); f.MdiParent = this; count+; f.Text = 新建文本 + count; f.Show(); private void Form1_Layout(object sender, LayoutEventArgs e) this.LayoutMdi(MdiLayout.Ar
12、rangeIcons); private void 打开ToolStripMenuItem_Click(object sender, EventArgs e) /在子窗口中打开文件 CheckSave(); if (openFileDialog1.ShowDialog() = DialogResult.OK) private void CheckSave() if (记事本.ActiveForm.Text != ) if (MessageBox.Show(是否保存当前文件?, 确认, MessageBoxButtons.OKCancel) = DialogResult.OK) /MySaveF
13、ile(); private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) if (MessageBox.Show(你确认要退出吗?, 提示, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes) this.Close(); private void 关于ToolStripMenuItem_Click(object sender, EventArgs e) MessageBox.Show(每天都要开心!); private void to
14、olStripButton1_Click(object sender, EventArgs e) 记事本 f = new 记事本(); f.MdiParent = this; count+; f.Text = 新建文本 + count; f.Show(); private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e) /实现另存为功能 this.saveFileDialog1.Filter = txt files(*.txt)|*.txt|rdf files(*.rdf)|*.rdf|all files(*.*)|*.*
15、; this.saveFileDialog1.FilterIndex = 1; if (this.saveFileDialog1.ShowDialog() = DialogResult.OK) filename = this.saveFileDialog1.FileName; try richTextBox1.LoadFile(filename, RichTextBoxStreamType.PlainText); catch if (filename != ) richTextBox1.SaveFile(filename, RichTextBoxStreamType.PlainText); p
16、rivate void 全选ToolStripMenuItem_Click(object sender, EventArgs e) MySaveFile(); private void MySaveFile() if (saveFileDialog1.ShowDialog() = DialogResult.OK) richTextBox1.SaveFile(saveFileDialog1.FileName); private void CheckSave() /提醒用户确认保存 if (记事本.ActiveForm.Text != ) if (MessageBox.Show(是否保存当前文件?
17、, 确认, MessageBoxButtons.OKCancel) = DialogResult.OK) MySaveFile(); private void 打开OToolStripMenuItem_Click(object sender, EventArgs e) /实现打开功能 CheckSave(); if (openFileDialog1.ShowDialog() = DialogResult.OK) richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText); private vo
18、id 页面设置ToolStripMenuItem_Click(object sender, EventArgs e) /创建页面设置对话框 PageSetupDialog my = new PageSetupDialog(); my.Document = printDocument1; try my.ShowDialog(); catch private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e) /实现剪切功能 int CurPosition = richTextBox1.SelectionStart; Clipboa
19、rd.SetDataObject(richTextBox1.SelectedText); richTextBox1.Text = richTextBox1.Text.Substring(0, CurPosition) + richTextBox1.Text.Substring(CurPosition+richTextBox1.SelectedText.Length); richTextBox1.SelectionStart = CurPosition; private void 复制ToolStripMenuItem_Click(object sender, EventArgs e) /实现复
20、制功能 Clipboard.SetDataObject(richTextBox1.SelectedText); private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e) /实现粘贴功能 IDataObject idata = Clipboard.GetDataObject(); if (idata.GetDataPresent(DataFormats.Text) string ClipBoardStr = (string)idata.GetData(DataFormats.Text); int CurPosition
21、= richTextBox1.SelectionStart; richTextBox1.Text = richTextBox1.Text.Substring(0, CurPosition) + ClipBoardStr + richTextBox1.Text.Substring(CurPosition); richTextBox1.SelectionStart = CurPosition + ClipBoardStr.Length; private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) /实现删除功能 int Cu
22、rPosition = richTextBox1.SelectionStart; Clipboard.SetDataObject(richTextBox1.SelectedText); richTextBox1.Text = richTextBox1.Text.Substring(0, CurPosition) + richTextBox1.Text.Substring(CurPosition + richTextBox1.SelectedText.Length); / richTextBox1.SelectionStart = CurPosition; private void 字体Tool
23、StripMenuItem_Click(object sender, EventArgs e) /创建字体对话框 fontDialog1.ShowDialog(); richTextBox1.SelectionFont = fontDialog1.Font; private void 颜色YToolStripMenuItem_Click(object sender, EventArgs e) /创建颜色对话框 colorDialog1.ShowDialog(); richTextBox1.SelectionColor = colorDialog1.Color; private void 撤消T
24、oolStripMenuItem_Click(object sender, EventArgs e) /实现撤消功能 if (this.richTextBox1.CanUndo = true) this.richTextBox1.Undo(); this.richTextBox1.ClearUndo(); private void 全选AToolStripMenuItem_Click(object sender, EventArgs e) /全选文本内容 this.richTextBox1.SelectAll(); private void 打印PToolStripMenuItem_Click
25、(object sender, EventArgs e) /创建打印对话框 PrintDialog p = new PrintDialog(); p.Document = printDocument1; if (p.ShowDialog() = DialogResult.OK) try printDocument1.Print(); catch private void 自动换行WToolStripMenuItem_Click(object sender, EventArgs e) /实现自动换行功能 richTextBox1.WordWrap = 自动换行WToolStripMenuItem
26、.Checked; private void richTextBox1_SelectionChanged(object sender,EventArgs e) if (richTextBox1.SelectedText.Length0) 剪切ToolStripMenuItem.Enabled = true; 粘贴ToolStripMenuItem.Enabled = true; 删除ToolStripMenuItem.Enabled = true; 复制ToolStripMenuItem.Enabled = true; else 剪切ToolStripMenuItem.Enabled = fa
27、lse; 粘贴ToolStripMenuItem.Enabled = false; 删除ToolStripMenuItem.Enabled = false; 复制ToolStripMenuItem.Enabled = false; 苏 州 市 职 业 大 学课程设计任务书 课程名称: 计算机语言C#课程设计 起讫时间: 2011.6.21 2011.6.24 院 系: 计算机工程系 班级: 10软件测试 指导教师: 张 苏、殷凡 系 主 任: 李 金 祥 一、课程设计课题本课程设计要求学生运用C#.NET独立设计、编程开发一个完整的Windows应用程序,并完成课程设计报告。可以从以下题目中选
28、择:绘图板二十一点游戏科学计算器弹珠游戏日记本屏幕保护程序挖地雷游戏调色板文本编辑器井字棋 也可自选课题(须征得指导教师同意)不建议选择贪吃蛇、华容道等难度比较高的题目,需要由本人完成大部分代码,不建议根据网上或书上的现成代码调试编写。二、课程设计要求1、设计选题:学生可以在“Windows应用程序设计课程设计选题”指定的题目中选取课程设计题目,具体题目以此文件为准。也可以自选,但自选的题目必须在课程设计开始前得到指导教师的认可。2、设计结果:学生需按所选题目的具体要求使用C#完成程序设计,同时还要完成课程设计说明书,以介绍课程设计的情况,说明书中应该至少包括以下几部分:l 题目说明l 总体设
29、计:概述程序的基本结构和主要技术。l 详细说明:选择几个功能模块详细说明设计时的想法和所用的技术。l 遇到的问题和解决方法l 心得体会3、考核要求学生需提交完整的C#源程序(电子版)和课程设计说明书(打印稿),要求程序运行稳定可靠,能实现题目中所要求的功能。课程设计说明书符合要求,并能对程序的设计思路或具体代码做出正确的解释。三、课程设计工作量1、程序中应有不少于100300行的自行编写的代码。2、软件界面美观大方,操作简洁易用,功能完备可靠。3、说明书中摘用关键代码部分,应标注详细的代码说明。4、课程设计报告以A4纸打印,其中正文不少于6页,正文主要用于解释实现思路和关键代码,完整代码作附件。四、课程设计说明书内容(有指导书的可省略)课程设计说明书中至少应该包括以下几部分:1、 封面2、 摘要3、 目录4、 选题说明5、 总体设计:概述程序的基本结构和主要技术。6、 详细说明:关键技术模块的详细说明,列出主要方法的声明、功能、调用参数及使用场合和方法,对其作用和实现思路进行解释。7、 遇到的问题和解决方法8、 心得体会9、 参考文献10、 附件:源程序课程设计说明书正文不少于6页,源程序只算附页。-
限制150内