C#记事本小程序实验报告解读.docx
- 文档编号:25258385
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:38
- 大小:93.53KB
C#记事本小程序实验报告解读.docx
《C#记事本小程序实验报告解读.docx》由会员分享,可在线阅读,更多相关《C#记事本小程序实验报告解读.docx(38页珍藏版)》请在冰豆网上搜索。
C#记事本小程序实验报告解读
洛阳理工学院实验报告
系别
计算机与信息工程系
班级
学号
姓名
课程名称
C#面向对象程序设计
实验日期
实验名称
综合实验,记事本
成绩
实验目的:
掌握使用面向对象技术进行程序设计的基本思想,熟悉Windows应用程序开发的基本方法和步骤。
实验条件:
装有VS2010的微机一台。
实验内容:
内容:
设计一个windows应用程序,要求1)至少设计三个类,并覆盖面向对象的继承、多态等基本特性;2)需使用到Editbox、Combobox等常用Windows控件;3)至少设计一个接口及接口支持类;4)最好使用到GDI+技术或者数据库编程技术。
建议题目:
(1)图书管理系统:
能够实现添加新书、修改和删除图书信息,借出操作等;支持按书号精确查询图书信息、按书名模糊查询图书信息等。
(2)记事本:
能够实现文件新建、保存、打开等操作;支持字体样式设置;支持文字查找和替换等编辑功能。
(3)绘图板:
能够实现直线、多边形、圆等几何图形绘制操作;支持图形文件保存;支持几何图形的选取、复制和移动等操作。
一、程序主要用到的控件有:
1、RichTextBox控件的主要属性
属性SelectedText、SelectionLength、SelectionStart:
属性SelectionFont:
属性SelectionColor:
属性Lines:
属性Modified:
事件SelectionChange:
事件TextChanged:
2、RichTextBox控件的主要方法
方法Clear():
方法Copy()、Cut()、Paste():
方法SelectAll():
方法Find():
方法SaveFile()和LoadFile():
方法Undo():
方法Redo():
二、功能设计与实现
1、剪贴板功能
放RichTextBox控件到窗体。
属性Name=richTextBox1,Dock=Fill,Text=""。
privatevoidmenuItemEditCut_Click(objectsender,EventArgse)
{richTextBox1.Cut();}//剪切
privatevoidmenuItemEditCopy_Click(objectsender,EventArgse)
{richTextBox1.Copy();}//拷贝
privatevoidmenuItemEditPaste_Click(objectsender,EventArgse)
{richTextBox1.Paste();}//粘贴
privatevoidmenuItemEditUndo_Click(objectsender,EventArgse)
{richTextBox1.Undo();}//撤销
privatevoidmenuItemEditRedo_Click(objectsender,EventArgse)
{richTextBox1.Redo();}//恢复
2、存取文件功能
文本编辑器都应具有文件存取功能,菜单顶级菜单项“文件”的弹出菜单中一般包括如下菜单项:
新建、打开、关闭、保存和另存为等。
需要用到打开文件对话框(OpenFileDialog控件)和保存文件对话框(SaveFileDialog控件)。
和
两个对话框的常用属性和方法:
属性Filter:
例如Filter=“纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*”
属性FilterIndex:
属性FileName:
属性InitialDirectory:
属性DefaultExt:
方法ShowDialog():
3、程序主窗体预览:
4、源程序:
1、主窗体代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO;
namespace记事本
{
publicpartialclassMainForm:
Form
{
#region初始化全局变量
///
///定义全局变量
///
boolnewnote=true;//是否新建文档
boolopenfile=true;//是否为打开的打开文件,true表示为打开的文件,否则表示新编辑的文件
boolsavefile=true;//是否保存文件
boolIsSaved=false;//标示符表示文本已经被保存过,true表示已保存,false表示未保存
stringFilename=null;//用于保存当前文本的文件名
boolIsnewnote=false;//是否为新建文档
boolIsclose=false;//是否关闭程序标示符
introw=1;//显示光标所在行号
intcol=1;//显示光标所在列号
#endregion
#region初始化主窗体
publicMainForm()
{
InitializeComponent();//初始化窗体
openfile=false;
//菜单栏选项
撤销.Enabled=false;
剪切.Enabled=false;
复制.Enabled=false;
粘贴.Enabled=true;
删除.Enabled=false;
全选.Enabled=false;
查找ToolStripMenuItem.Enabled=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窗体载入时
privatevoidForm1_Load(objectsender,EventArgse)
{
this.状态栏ToolStripMenuItem.Checked=true;
this.toolStripStatusLabel1.Text="正在执行:
文本读写操作";
this.toolStripStatusLabel2.Text="当前文档计数:
"+richTextBox1.Text.Length;
this.toolStripStatusLabel3.Text="|";
this.toolStripStatusLabel4.Text="光标所在:
"+"第"+row+"行第"+col+"列|";
timer1.Start();
}
#endregion
#region菜单栏-文件-新建
///
///设置新建选项,如果已有文本在文本框中,则需要先提示用户进行保存
///
///
///
privatevoid新建_Click(objectsender,EventArgse)
{
try
{
if(newnote)
{
//如果文本未保存,或者被修改,则在新建前应该提醒用户保存
if(richTextBox1.Modified)
{
DialogResultdialg=MessageBox.Show("文件已被修改是否要保存?
","保存文件",
MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question);
switch(dialg)
{
caseDialogResult.Yes:
{
另存为_Click(sender,e);
richTextBox1.Clear();
IsSaved=false;
Isnewnote=true;//表示此时文本为新建文本
this.Text="新建-记事本";
break;
}
caseDialogResult.No:
{
richTextBox1.Clear();
IsSaved=false;
Isnewnote=true;//表示此时文本为新建文本
this.Text="新建-记事本";
break;
}
caseDialogResult.Cancel:
{
break;
}
}
}
elseif(richTextBox1.Modified==false)
{
richTextBox1.Clear();
this.Text="新建-记事本";
Isnewnote=true;
richTextBox1.Modified=true;//重置文本框标识符
}
elseif(IsSaved)
{
richTextBox1.Clear();
IsSaved=false;
Isnewnote=true;//表示此时文本为新建文本
this.Text="新建-记事本";
richTextBox1.Modified=false;
}
}
}
catch(System.Exceptionex)
{
MessageBox.Show(ex.Message);
}
}
#endregion
#region菜单栏-文件-打开
///
///想要实现打开文件功能,要注意的一点就是,在打开文件的时候一定要指定解码方式
///不然会出现中文乱码现象
///C#默认解码方式为unicode方式,而中文为gb2312,因此必须指定其中文的解码方式
///
///
privatevoid打开_Click(objectsender,EventArgse)
{
try
{
//如果文本框为空或者没有修改则执行以下代码
if(richTextBox1.Modified==false)
{
openFileDialog1.Title="打开";
openFileDialog1.Filter="文本文件(*.txt)|*.txt|C#程序文件(*.cs)|*.cs|Word文档(*.doc)|*.doc|所有文件(*.*)|*.*";//指定所能打开的文件格式
openFileDialog1.FileName="无标题";
openFileDialog1.AddExtension=true;//如果用户省略扩展名,将自动添加扩展名
if(openFileDialog1.ShowDialog()==DialogResult.OK)
{
StreamReadersr=newStreamReader(openFileDialog1.FileName,System.Text.Encoding.Default);
richTextBox1.Text=sr.ReadToEnd();//从流的当前位置到流的结束位置
this.Text=openFileDialog1.SafeFileName+"-记事本";
sr.Close();
Filename=openFileDialog1.FileName;
richTextBox1.Modified=false;//将文本框标示符重置
openfile=true;//重置标识符
IsSaved=true;
}
}
elseif(richTextBox1.Modified)
{
DialogResultr=MessageBox.Show("是否将更改保存到无标题?
","无标题",
MessageBoxButtons.YesNoCancel,MessageBoxIcon.Question);
intg=(int)r;//当g为6时表示选择的是“是”,为7是选择的是“否”
if(g==6)
{
if(openfile==false)
{
保存_Click(sender,e);
}
elseif(openfile)
{
saveFileDialog1.FileName=Filename;
richTextBox1.SaveFile(saveFileDialog1.FileName,RichTextBoxStreamType.PlainText);
}
//if(saveFileDialog1.ShowDialog()==DialogResult.OK)
//{
openFileDialog1.Title="打开";
openFileDialog1.Filter="文本文件(*.txt)|*.txt|C#程序文件(*.cs)|*.cs|Word文档(*.doc)|*.doc|所有文件(*.*)|*.*";//指定所能打开的文件格式
openFileDialog1.FileName="无标题";
openFileDialog1.AddExtension=true;//如果用户省略扩展名,则自动添加扩展名
if(openFileDialog1.ShowDialog()==DialogResult.OK)
{
StreamReadersr=newStreamReader(Filename,Encoding.Default);
richTextBox1.Text=sr.ReadToEnd();//从流的当前位置到流的结束位置
this.Text=openFileDialog1.SafeFileNames+"记事本";//标题栏中显示打开的文件信息,包括文件名及其扩展名
sr.Close();
Filename=openFileDialog1.FileName;
}
//}
}
elseif(g==7)//表示选择的是“否”
{
openFileDialog1.Title="打开";
openFileDialog1.Filter="文本文件(*.txt)|*.txt|C#程序文件(*.cs)|*.cs|Word文档(*.doc)|*.doc|所有文件(*.*)|*.*";//指定所能打开的文件格式
openFileDialog1.FileName="无标题";
openFileDialog1.AddExtension=true;
if(openFileDialog1.ShowDialog()==DialogResult.OK)
{
StreamReadersr=newStreamReader(openFileDialog1.FileName,
Encoding.Default);//这里一定要指定解码的方式为,不然会出现中文乱码情况
richTextBox1.Text=sr.ReadToEnd();//从流的当前位置到流的结束位置
this.Text=openFileDialog1.SafeFileName+"无标题";
sr.Close();
Filename=openFileDialog1.FileName;
}
}
else
{
return;
}
}
}
catch(System.Exceptionp)
{
MessageBox.Show(p.Message);
}
}
#endregion
#region菜单栏-文件-保存
///
///实现文件保存功能,在进行保存的时候一定要指定中文编码为ANSI格式
///否则系统默认为Unicode格式,RichTextBoxStreamType.PlainText可以保证保存的文本为指定类型
///
///
///
privatevoid保存_Click(objectsender,EventArgse)
{
try
{
//如果要保存文件不是新建文件,则执行保存功能
if(savefile&&Isnewnote==false)
{
if(IsSaved!
=true)
{
saveFileDialog1.FileName="*.txt";
saveFileDialog1.Title="保存";
saveFileDialog1.Filter="文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
saveFileDialog1.RestoreDirectory=true;
}
else
{
saveFileDialog1.FileName=Filename;
}
if(!
IsSaved&&saveFileDialog1.ShowDialog()==DialogResult.OK)
{
StreamWritersw=newStreamWriter(saveFileDialog1.FileName,false,Encoding.Default);
sw.WriteLine(richTextBox1.Text);
sw.Flush();//清除缓存
sw.Close();//保存后关闭对话框
Filename=saveFileDialog1.FileName;//保存当前文件保存路径
IsSaved=true;//表示文件已被保存
this.Save.Enabled=false;
Isclose=false;
}
//如果对已保存过文件修改后保存,则执行以下代码,保存并覆盖原来文件
elseif(IsSaved==true)
{
//RichTextBoxStreamType.PlainText可以将保存的文件指定类型
richTextBox1.SaveFile(saveFileDialog1.FileName,RichTextBoxStreamType.PlainText);
IsSaved=true;//表示文件已被保存
Isclose=false;
this.Save.Enabled=false;
}
else
{
Isclose=true;
}
}
//如果当前文本为新建文本,则执行另存为功能
elseif(IsSaved==false&&Isnewnote==true)
{
另存为_Click(sender,e);
}
}
catch(System.Exceptionex)
{
MessageBox.Show(ex.Message);
}
finally
{
richTextBox1.Modified=false;//将文本框的标示符改为false,表示未被修改
}
}
#endregion
#region菜单栏-文件-另存为
///
///如果想将文本保存到其他路径,则可以执行以下代码
///
///
///
privatevoid另存为_Click(objectsender,EventArgse)
{
try
{
saveFileDialog1.Title="另存为";
saveFileDialog1.FileName="*.txt";
saveFileDialog1.Filter="文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
saveFileDialog1.RestoreDirectory=true;
if(saveFileDialog1.ShowDialog()==DialogResult.OK)
{
StreamWritersw=newStreamWriter(saveFileDialog1.FileName,false,Encoding.Default);
sw.Write(richTextBox1.Text);
sw.Close();//保存后关闭对话框
IsSaved=true;//表示文档已被保存
}
else
{
Isclose=true;
}
}
catch(System.Exceptionex)
{
MessageBox.Show(ex.Message);
}
}
#endregion
#region菜单栏-文件-退出
///
///退出功能,要注意的是,当用户要退出程序时,如果还有文本没有保存
///则应当提醒用户保存
///
///
///
privatevoid退出_Click(objectsender,EventArgse)
{
if(richTextBox1.Modified==false)
{
this.Close();
}
elseif(richTextBox1.Modified)
{
DialogResultdialg=Mes
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 记事本 程序 实验 报告 解读