C# 记事本小程序 实验报告_第1页
C# 记事本小程序 实验报告_第2页
C# 记事本小程序 实验报告_第3页
C# 记事本小程序 实验报告_第4页
C# 记事本小程序 实验报告_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、洛阳理工学院实验报告系别计算机与信息工程系班级学号姓名课程名称C#面向对象程序设计实验日期实验名称综合实验,记事本成绩实验目的:掌握使用面向对象技术进行程序设计的基本思想,熟悉Windows应用程序开发的基本方法和步骤。 实验条件:装有VS2010的微机一台。实验内容:内容:设计一个windows应用程序,要求1)至少设计三个类,并覆盖面向对象的继承、多态等基本特性;2)需使用到Editbox、 Combobox等常用Windows控件;3)至少设计一个接口及接口支持类;4)最好使用到GDI+技术或者数据库编程技术。建议题目:(1)图书管理系统:能够实现添加新书、修改和删除图书信息,借出操作等

2、;支持按书号精确查询图书信息、按书名模糊查询图书信息等。(2)记事本:能够实现文件新建、保存、打开等操作;支持字体样式设置;支持文字查找和替换等编辑功能。(3)绘图板:能够实现直线、多边形、圆等几何图形绘制操作;支持图形文件保存;支持几何图形的选取、复制和移动等操作。一、程序主要用到的控件有:1、RichTextBox控件的主要属性属性SelectedText、SelectionLength、SelectionStart: 属性SelectionFont: 属性SelectionColor: 属性Lines: 属性Modified: 事件SelectionChange:事件TextChange

3、d:2、RichTextBox控件的主要方法方法Clear(): 方法Copy()、Cut()、Paste(): 方法SelectAll(): 方法Find(): 方法SaveFile()和LoadFile():方法Undo(): 方法Redo(): 二、功能设计与实现1、剪贴板功能 放RichTextBox控件到窗体。属性Name=richTextBox1,Dock=Fill,Text=""。 private void menuItemEditCut_Click(object sender,EventArgs e)richTextBox1.Cut();/剪切private

4、 void menuItemEditCopy_Click(object sender,EventArgs e)richTextBox1.Copy();/拷贝private void menuItemEditPaste_Click(object sender,EventArgs e)richTextBox1.Paste();/粘贴private void menuItemEditUndo_Click(object sender,EventArgs e)richTextBox1.Undo();/撤销private void menuItemEditRedo_Click(object sender,

5、EventArgs e)richTextBox1.Redo();/恢复2、存取文件功能 文本编辑器都应具有文件存取功能,菜单顶级菜单项“文件”的弹出菜单中一般包括如下菜单项:新建、打开、关闭、保存和另存为等。需要用到打开文件对话框(OpenFileDialog控件)和保存文件对话框(SaveFileDialog控件)。和两个对话框的常用属性和方法:属性Filter:例如Filter=“纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*” 属性FilterIndex: 属性FileName: 属性InitialDirectory: 属性DefaultExt: 方法ShowDialo

6、g(): 3、 程序主窗体预览:4、 源程序:1、 主窗体代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace 记事本 public partial class MainForm : Form #region 初始化全局变量 / <sum

7、mary>摘要 / 定义全局变量 / </summary> bool newnote = true;/是否新建文档 bool openfile = true;/是否为打开的打开文件,true表示为打开的文件,否则表示新编辑的文件 bool savefile = true;/是否保存文件 bool IsSaved = false; /标示符表示文本已经被保存过,true表示已保存,false表示未保存 string Filename = null; /用于保存当前文本的文件名 bool Isnewnote = false;/是否为新建文档 bool Isclose = fals

8、e; /是否关闭程序标示符 int row = 1; /显示光标所在行号 int col = 1; /显示光标所在列号#endregion#region 初始化主窗体 public MainForm() InitializeComponent(); /初始化窗体 openfile = false; /菜单栏选项 撤销.Enabled = false; 剪切.Enabled = false; 复制.Enabled = false; 粘贴.Enabled = true; 删除.Enabled = false; 全选.Enabled = false; 查找ToolStripMenuItem.Enab

9、led = false; /鼠标点击菜单选项 撤销1.Enabled = false; 剪切1.Enabled = false; 复制1.Enabled = false; 粘贴1.Enabled = true; 删除1.Enabled = false; 全选1.Enabled = false; 字体1.Enabled = false; 颜色1.Enabled = false; #endregion #region 窗体载入时 private void Form1_Load(object sender, EventArgs e) this.状态栏ToolStripMenuItem.Checked

10、 = true; this.toolStripStatusLabel1.Text = "正在执行:文本读写操作 " this.toolStripStatusLabel2.Text = "当前文档计数:" + richTextBox1.Text.Length; this.toolStripStatusLabel3.Text = "|" this.toolStripStatusLabel4.Text ="光标所在:" +"第" + row + "行 第" + col + &quo

11、t;列 |" timer1.Start(); #endregion #region 菜单栏-文件-新建 / <summary>摘要 / 设置新建选项,如果已有文本在文本框中,则需要先提示用户进行保存 / </summary> / <param name="sender"></param> / <param name="e"></param> private void 新建_Click(object sender, EventArgs e) try if (newnote)

12、/如果文本未保存,或者被修改,则在新建前应该提醒用户保存 if (richTextBox1.Modified) DialogResult dialg = MessageBox.Show("文件已被修改是否要保存?","保存文件", MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question); switch (dialg) case DialogResult.Yes: 另存为_Click(sender, e); richTextBox1.Clear(); IsSaved = false; Isnewnote

13、 = true; /表示此时文本为新建文本 this.Text = "新建-记事本" break; case DialogResult.No: richTextBox1.Clear(); IsSaved = false; Isnewnote = true; /表示此时文本为新建文本 this.Text = "新建-记事本" break; case DialogResult.Cancel: break; else if (richTextBox1.Modified=false) richTextBox1.Clear(); this.Text = "

14、;新建-记事本" Isnewnote = true; richTextBox1.Modified = true;/重置文本框标识符 else if (IsSaved) richTextBox1.Clear(); IsSaved = false; Isnewnote = true; /表示此时文本为新建文本 this.Text = "新建-记事本" richTextBox1.Modified=false; catch (System.Exception ex) MessageBox.Show(ex.Message); #endregion#region 菜单栏-文件

15、-打开 / <summary>摘要 / 想要实现打开文件功能,要注意的一点就是,在打开文件的时候一定要指定解码方式 / 不然会出现中文乱码现象 / </summary>C#默认解码方式为unicode方式,而中文为gb2312,因此必须指定其中文的解码方式 / <param name="sender"></param> / <param name="e"></param> private void 打开_Click(object sender, EventArgs e) try /如

16、果文本框为空或者没有修改则执行以下代码 if (richTextBox1.Modified=false) openFileDialog1.Title = "打开" openFileDialog1.Filter = "文本文件(*.txt)|*.txt|C#程序文件(*.cs)|*.cs|Word文档(*.doc)|*.doc|所有文件(*.*)|*.*" /指定所能打开的文件格式 openFileDialog1.FileName = "无标题" openFileDialog1.AddExtension = true; /如果用户省略扩

17、展名,将自动添加扩展名 if (openFileDialog1.ShowDialog()=DialogResult.OK) StreamReader sr = new StreamReader(openFileDialog1.FileName,System.Text.Encoding.Default); richTextBox1.Text = sr.ReadToEnd(); /从流的当前位置到流的结束位置 this.Text = openFileDialog1.SafeFileName + "-记事本" sr.Close(); Filename = openFileDial

18、og1.FileName; richTextBox1.Modified=false; /将文本框标示符重置 openfile = true; /重置标识符 IsSaved = true; else if (richTextBox1.Modified) DialogResult r = MessageBox.Show("是否将更改保存到 无标题?", "无标题", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); int g = (int)r; /当g为6时表示选择的是“是”,为7是选择的是“

19、否” if (g = 6) if (openfile=false) 保存_Click(sender,e); else if(openfile) saveFileDialog1.FileName = Filename; richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText); /if (saveFileDialog1.ShowDialog()=DialogResult.OK) / openFileDialog1.Title = "打开" openFileDialog1.F

20、ilter = "文本文件(*.txt)|*.txt|C#程序文件(*.cs)|*.cs|Word文档(*.doc)|*.doc|所有文件(*.*)|*.*" /指定所能打开的文件格式 openFileDialog1.FileName = "无标题" openFileDialog1.AddExtension = true; /如果用户省略扩展名,则自动添加扩展名 if (openFileDialog1.ShowDialog() = DialogResult.OK) StreamReader sr = new StreamReader(Filename,

21、Encoding.Default); richTextBox1.Text = sr.ReadToEnd(); /从流的当前位置到流的结束位置 this.Text = openFileDialog1.SafeFileNames + "记事本" /标题栏中显示打开的文件信息,包括文件名及其扩展名 sr.Close(); Filename = openFileDialog1.FileName; / else if (g = 7) /表示选择的是“否” openFileDialog1.Title = "打开" openFileDialog1.Filter = &

22、quot;文本文件(*.txt)|*.txt|C#程序文件(*.cs)|*.cs|Word文档(*.doc)|*.doc|所有文件(*.*)|*.*" /指定所能打开的文件格式 openFileDialog1.FileName = "无标题" openFileDialog1.AddExtension = true; if (openFileDialog1.ShowDialog() = DialogResult.OK) StreamReader sr = new StreamReader(openFileDialog1.FileName, Encoding.Defa

23、ult); /这里一定要指定解码的方式为,不然会出现中文乱码情况 richTextBox1.Text = sr.ReadToEnd(); /从流的当前位置到流的结束位置 this.Text = openFileDialog1.SafeFileName + "无标题" sr.Close(); Filename = openFileDialog1.FileName; else return; catch (System.Exception p) MessageBox.Show(p.Message); #endregion#region 菜单栏-文件-保存 / <summa

24、ry>摘要 / 实现文件保存功能,在进行保存的时候一定要指定中文编码为ANSI格式 / 否则系统默认为Unicode格式,RichTextBoxStreamType.PlainText可以保证保存的文本为指定类型 / </summary> / <param name="sender"></param> / <param name="e"></param> private void 保存_Click(object sender, EventArgs e) try /如果要保存文件不是新建文件

25、,则执行保存功能 if (savefile&&Isnewnote=false) if (IsSaved!=true) saveFileDialog1.FileName = "*.txt" saveFileDialog1.Title = "保存" saveFileDialog1.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*" saveFileDialog1.RestoreDirectory = true; else saveFileDialog1.FileName = Filenam

26、e; if (!IsSaved && saveFileDialog1.ShowDialog()=DialogResult.OK) StreamWriter sw = new StreamWriter(saveFileDialog1.FileName, false, Encoding.Default); sw.WriteLine(richTextBox1.Text); sw.Flush(); /清除缓存 sw.Close(); /保存后关闭对话框 Filename = saveFileDialog1.FileName; /保存当前文件保存路径 IsSaved = true; /表

27、示文件已被保存 this.Save.Enabled = false; Isclose = false; /如果对已保存过文件修改后保存,则执行以下代码,保存并覆盖原来文件 else if (IsSaved=true) /RichTextBoxStreamType.PlainText可以将保存的文件指定类型 richTextBox1.SaveFile(saveFileDialog1.FileName,RichTextBoxStreamType.PlainText); IsSaved = true; /表示文件已被保存 Isclose = false; this.Save.Enabled = fa

28、lse; else Isclose = true; /如果当前文本为新建文本,则执行另存为功能 else if (IsSaved = false && Isnewnote = true) 另存为_Click(sender, e); catch (System.Exception ex) MessageBox.Show(ex.Message); finally richTextBox1.Modified = false; /将文本框的标示符改为false,表示未被修改 #endregion#region 菜单栏-文件-另存为 / <summary>摘要 / 如果想将文

29、本保存到其他路径,则可以执行以下代码 / </summary> / <param name="sender"></param> / <param name="e"></param> private void 另存为_Click(object sender, EventArgs e) try saveFileDialog1.Title = "另存为" saveFileDialog1.FileName="*.txt" saveFileDialog1.Filte

30、r="文本文件(*.txt)|*.txt|所有文件(*.*)|*.*" saveFileDialog1.RestoreDirectory=true; if (saveFileDialog1.ShowDialog()=DialogResult.OK) StreamWriter sw=new StreamWriter(saveFileDialog1.FileName,false,Encoding.Default); sw.Write(richTextBox1.Text); sw.Close(); /保存后关闭对话框 IsSaved = true;/表示文档已被保存 else I

31、sclose = true; catch (System.Exception ex) MessageBox.Show(ex.Message); #endregion#region 菜单栏-文件-退出 / <summary>摘要 / 退出功能,要注意的是,当用户要退出程序时,如果还有文本没有保存 / 则应当提醒用户保存 / </summary> / <param name="sender"></param> / <param name="e"></param> private void

32、 退出_Click(object sender, EventArgs e) if (richTextBox1.Modified=false) this.Close(); else if(richTextBox1.Modified) DialogResult dialg=MessageBox.Show("是否将改动保存?","提醒",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question); switch (dialg) case DialogResult.Yes: 保存_Click(null,null)

33、; if (Isclose=false) this.Close(); richTextBox1.Modified = true; Isclose = true; break; case DialogResult.No: this.Close(); break; case DialogResult.Cancel: break; #endregion#region 菜单栏-编辑-撤销 private void 撤销_Click(object sender, EventArgs e) if (richTextBox1.CanUndo=true) richTextBox1.Undo(); /richT

34、extBox1.ClearUndo(); else richTextBox1.Redo(); #endregion#region 菜单栏-编辑-剪切 private void 剪切_Click(object sender, EventArgs e) richTextBox1.Cut(); #endregion#region 菜单栏-编辑-复制 private void 复制_Click(object sender, EventArgs e) richTextBox1.Copy(); #endregion#region 菜单栏-编辑-粘贴 private void 粘贴_Click(object

35、 sender, EventArgs e) richTextBox1.Paste(); #endregion#region 菜单栏-编辑-删除 private void 删除_Click(object sender, EventArgs e) richTextBox1.SelectedText = "" #endregion#region 菜单栏-编辑-全选 private void 全选_Click(object sender, EventArgs e) richTextBox1.SelectAll(); #endregion#region 菜单栏-编辑-查找 private void 查找ToolStripMenuItem_Click(object sender, EventArgs e) Searchfrm search=new Searchfrm(); search.Show(this); #endregion#region 菜单栏-编辑-替换 private void 替换ToolStripMenuItem_Click(object sender, Eve

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论