摘要:这个课题是一个关于文本编辑器的小程序,运用一些简单的记事本的基本操作功能来实现的。
该程序利用C#程序编写,在Visual Studio 2005的环境下进行调试运行的。
对于该程序开发,必须达到以下要求:1、熟悉.NET开发环境,能够使用C#语言在.NET平台上独立设计、开发WINDOWS应用程序。
2、掌握C#语言的异常处理技术,能够使用.NET各种调试方法调试代码,掌握帮助的使用方法。
3、掌握常用控件以及控件的常用属性的使用方法。
4、界面要做到简洁易懂,具有人性化等特点。
5、程序没有在使用过程中不存在任何的问题。
目录摘要: (1)一、采用技术 (3)1. visual studio 2005编辑环境 (3)2.C#的窗体编程编程 (3)二、选题说明 (4)三.总体说明 (4)1. 程序的基本结构 (4)2. 程序的主要技术 (4)四.详细说明 (5)1. 界面设计 (5)五.遇到的问题和解决方法 (9)六.心得体会 (9)七.参考文献 (10)八.部分程序代码 (10)一、采用技术1. visual studio 2005编辑环境Visual Studio 是微软公司推出的开发环境。
是目前最流行的 Windows 平台应用程序开发环境。
目前已经开发到 8.0 版本,也就是 Visual Studio 2005。
Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。
Visual Studio 是一套完整的开发工具集,用于生成 Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。
Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可以共享工具且有助于创建混合语言解决方案。
另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键技术。
2.C#的窗体编程Windows 窗体是用于 Microsoft Windows 应用程序开发的、基于 .NET Framework 的新平台。
此框架提供一个有条理的、面向对象的、可扩展的类集,使您能够开发功能丰富的 Windows 应用程序。
另外,Windows 窗体可作为多层分布式解决方案中的本地用户界面。
窗体是一种文档,可以用来收集信息。
它包括两部分,一部分是由窗体设计者输入的,填写窗体的人无法更改的文字或图形。
窗体设计者可以插入希望得到回答的问题、选项列表、信息表格等。
另一部分是由窗体填写者输入的,用于从填写窗体者处收集信息并进行整理的空白区域。
窗体设计者可以在文档中插入窗体域或 ActiveX 控件,为窗体填写者提供用于收集数据的位置。
二、选题说明随着科技的发展,人们对精神生活要求的越来越高,纸质的手动式的书写方式已经不是能够代表新世纪的生活需要了,所以现在各种不同功能的文本编辑器已经悄悄走进我们的生活和学习中,像简单的就有记事本。
但是一个简单的文本编辑器也是很重要的,是基础。
所以在结合自己的一个学期的很认真的学习c#后,决定自己编译一个类似与记事本的,但功能比记事本强大的文本编辑器。
三.总体说明1. 程序的基本结构操作界面的主窗口为文本编辑器的主入口,类似于记事本的形式,菜单栏要如下的几项(),另外还有两个简单的toolstripe式的图片按钮,分别是新建和保存。
当点击新建的时候,会弹出我们将要编辑的文档文本窗口,这是我们编写文字的地方。
书写完毕后,要先确认是否保存此文件夹,这样就不会发生自己所编辑的内容会丢失。
2. 程序的主要技术(1)编写要先新建,编写之后要有保存功能;(2)基本的操作功能如,复制、粘贴、剪切、撤销等;(3)还可以设置文字的字体字形和字体的颜色。
四.详细说明1. 界面设计打开Visual Studio 2005开发工具,新建一个Windows应用程序,然后在窗体上依次放置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:未考虑到生成文档窗体在主窗体中的显示解决办法:在参照样例程序的时候,发现文档是显示在主窗体内部,结合自己的所学,发现设置主窗体的属性记事本 f = new记事本();f.MdiParent = this;count++;f.Text = "新建文本" + count;设置成Mdiparent属性即可。
问题2:不知到什么属性被修改,导致主窗体关闭失效解决办法:在菜单文件中设置关闭程序的命令,并申请了菜单合并,不需要在新建文档的情况下就能关闭主窗体,现在仍然留下一个让人深究的问题,究竟是什么样的属性才是控制最大化,最小化,以及关闭的显隐性,有待继续学习。
这是自己在程序完成的时候出现的意外,但是确是我在编写过程中遇到的最大难题。
问题3:未考虑到文档关闭时,文档是否保存解决办法:这是细节问题,其实是很容易做到,当关闭的时候显示一个对话框提示一下即可。
六.心得体会通过本次的课程设计,让我学会了把书本上的知识用到了实际中来。
虽然在这一周中一直沉浸在课程设计中,有的问题一直到了最后才被解决,虽然现在还留有一个问题,但是我认为这未必就不是好事,它的存在激发了我继续深入学习c#开发程序的热情,我会更加努力的去探索,去深入的剖析。
这样能锻炼我的意志,磨练我的耐心,失败是成功之母,这话一点都没错,没有失败就没有成功。
让我没有失去信心的是关怀我们的老师,当我们有了问题和疑问,老师就很耐心的给予讲解,让我们有了一个良好的学习氛围。
当然同学之间的互相帮助也是不容护忽视的,同时也证实了那句话“团结就是力量”。
还有让我学会了利用c#的windows程序可以做出这样的小系统,以前只会用c#编写控制台程序,现在让我懂得了如何利用c#来编写窗体代码,我很开心。
回顾此次课程设计感觉收获很大,不仅巩固了以前所学的知识,而且学到了很多书本上学不到的东西。
通过这次课程设计使我们懂得了理论和实际相结合的重要性,只有把理论与实际相结合,从理论中得出结论,才能真正为社会服务。
七.参考文献[1]郑阿奇、梁敬东、钱晓军等,c#实用教程,电子工业出版社,2009年[2] 钱雪忠、黄学光等,数据库原理及应用,北京邮电大学出版社,2005年. 八.部分程序代码private void格式ToolStripMenuItem_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) {youtMdi(MdiLayout.ArrangeIcons);}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){//MySaveFile();}}}private void退出ToolStripMenuItem_Click(object sender, EventArgs e){if (MessageBox.Show("你确认要退出吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes){this.Close();}EventArgs e){MessageBox.Show("每天都要开心!");}private void toolStripButton1_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(*.*)|*.*";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);}private 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("是否保存当前文件?", "确认", MessageBoxButtons.OKCancel) == DialogResult.OK){MySaveFile();}}}EventArgs e){//实现打开功能CheckSave();if (openFileDialog1.ShowDialog() == DialogResult.OK) { richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText);}}private void页面设置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;Clipboard.SetDataObject(richTextBox1.SelectedText);richTextBox1.Text = richTextBox1.Text.Substring(0, CurPosition) +richTextBox1.Text.Substring(CurPosition+richTextBox1.SelectedText.Len gth);richTextBox1.SelectionStart = CurPosition;}private void复制ToolStripMenuItem_Click(object sender, EventArgs e){//实现复制功能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 = 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 CurPosition = 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字体ToolStripMenuItem_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撤消ToolStripMenuItem_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(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.Checked;}private void richTextBox1_SelectionChanged(objectsender,EventArgs e){if (richTextBox1.SelectedText.Length>0){剪切ToolStripMenuItem.Enabled = true;粘贴ToolStripMenuItem.Enabled = true;删除ToolStripMenuItem.Enabled = true;复制ToolStripMenuItem.Enabled = true;}else{剪切ToolStripMenuItem.Enabled = false;粘贴ToolStripMenuItem.Enabled = false;删除ToolStripMenuItem.Enabled = false;复制ToolStripMenuItem.Enabled = false;}}苏州市职业大学课程设计任务书课程名称:计算机语言C#课程设计起讫时间:2011.6.21 ~ 2011.6.24 院系:计算机工程系班级:10软件测试指导教师:张苏、殷凡系主任:李金祥。