C#编写的文本编辑器课程设计.docx
《C#编写的文本编辑器课程设计.docx》由会员分享,可在线阅读,更多相关《C#编写的文本编辑器课程设计.docx(66页珍藏版)》请在冰点文库上搜索。
![C#编写的文本编辑器课程设计.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/333e03a7-7ab4-479d-93ff-96c5534421c7/333e03a7-7ab4-479d-93ff-96c5534421c71.gif)
C#编写的文本编辑器课程设计
河南中医学院
《C#程序设计》课程设计报告
文本编辑器
院系:
专业:
班级:
信息技术学院
信息管理与信息系统专业
2010级信管一班
姓名:
指导教师:
完成日期:
2011年6月10日
设计题目:
文本编辑器
1.题目描述
设计一个文本编辑器,能够实现对文本的编辑,窗体应有:
文件,编辑,格式,查看,帮助。
(模拟文本文档,添加部分word功能)
提供以下功能:
1.1文件操作能够实现:
新建、打开、保存、另存为、页面属性、打印、打印预览、退出功能。
1.2编辑操作能够实现:
撤销、剪切、复制、粘贴、删除、查找、转到、全选、时间/日期、替
换功能。
1.3格式操作能够实现:
自动换行、字体、颜色、背景颜色设置。
1.4查看操作能够实现:
状态栏。
1.5帮助操作能够实现:
帮助主题、关于记事本。
另:
(1)实现鼠标的右键常用功能,如复制、粘贴、剪切、撤销、全选、颜色。
(2)实现各功能的快捷键设置
(3)实现文本框的外观设置
1.应用程序功能说明
文件
编辑
新建:
在未保存的情况下提示是否需要对文件进行保存
打开:
打开已有的文件
保存:
对文件进行保存,并显示保存的位置
另存为:
和保存的功能基本相似
页面属性:
显示文本文档的页面属性
打印:
实现对文本的打印功能
打印预览:
打印前对打印效果的预览
退出:
关闭打开的文本文档
撤销:
撤除上一步操作
剪切:
将选中的部分剪切掉
复制:
复制选中的部分
粘贴:
对剪切和复制的部分进行粘贴
删除:
删除选中的部分
查找:
实现单方向查找
全选:
选中文本文档中的全部内容
时间/日期:
在文本后加上时间
替换:
对那些需要改变的内容实施替换和全部替换
自动换行:
在一行写满之后,自动跳转到下一行
格式字体:
调用系统中自带的字体,实现对字体样式和大小的改变颜色:
调用系统中自带的颜色,实现对字体颜色的改变
背景颜色:
在给定的几种颜色中选一种作为背景颜色
查看状态栏:
显示当前输入文本的字数和年/月/日
帮助主题:
显示帮助部分
帮助关于记事本:
版权的说明
客户反馈:
对客户的满意程度实施调查
3.源程序
3.1Form1部分源代码
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO;//调用命名空间
usingSystem.Drawing.Printing;
namespace模拟文本文档ì
{
//调用打印命名空间
public
partial
class
Form1:
Form
{
stringname;
stringdk;
StringReaderstreamToPrint=
FontprintFont;
//intFindPosition=0;
publicintk=0;
publicForm1()
null;
{
InitializeComponent();
}
private
voidForm1_Load(object
sender,
EventArgse)
{
撤销¨2ToolStripMenuItem.Enabled=
false;//在程序运行开始时这些选择都是
无效的
剪切DToolStripMenuItem.Enabled=复制ToolStripMenuItem.Enabled=删除yToolStripMenuItem.Enabled=
false;
false;
false;
转到ì?
ToolStripMenuItem.Enabled=false;
//状态栏ToolStripMenuItem.Enabled=false;
查找替换ToolStripMenuItem.Enabled=false
;
this.richTextBox1.Anchor=
(System.Windows.Forms.AnchorStyles)(System.Windows.Forms.AnchorStyles.Left|
System.Windows.Forms.AnchorStyles.Bottom|
System.Windows.Forms.AnchorStyles.Right|
System.Windows.Forms.AnchorStyles.Top);//richTextBox1的放大与还原代
码
}
private
void
字体?
?
ToolStripMenuItem_Click(
object
sender,
EventArgse)
{
if
(fontDialog1.ShowDialog()==
DialogResult
.OK)//
获取对话框的返回值是确
定
richTextBox1.SelectionFont=fontDialog1.Font;
//获取系统的字体
}
private
void
新建ToolStripMenuItem_Click(
object
sender,
EventArgse)
{
if
(richTextBox1.Modified==
true
)
{
DialogResultn=MessageBox.Show("文件"+Text+"”内容已修改\n是否
要保存","提示",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Exclamation);//带有黄
色感叹号的MessageBox
switch(n)//使switch用语句判断
{
case(DialogResult.Yes):
保存ToolStripMenuItem_Click(sender,e);
break;
case(DialogResult.No):
richTextBox1.Text="";
break;
case(DialogResult.Cancel):
richTextBox1.Modified=false;
break;
}
}
}
private
void
打开ToolStripMenuItem_Click_1(
object
sender,
EventArgse)
{
OpenFileDialog
newdk.Title=
stringdakai=
Environment.GetFolderPath(
newdk=newOpenFileDialog();//实例化newdk
"打开";//设置文件对话框的标题
Environment.SpecialFolder.Desktop);//从电脑中检索的对应文
件赋值给字符串变量
dakai
//将dakai
赋值给newdk
newdk.Filter="纯文本(*.txt)|*.txt|c#源文件(*.cs)|*.cs|10信管一班陈勇
(*.txt)|*.10信管一班陈勇";//文件名筛选器
newdk.ValidateNames=true;
newdk.CheckFileExists=true;
newdk.ShowHelp=true;//获取帮助按钮
newdk.Multiselect=true;
newdk.FilterIndex=2;//表示32位的有效整数不可随意赋值
if(openFileDialog1.ShowDialog()==DialogResult.OK)//在打开对话框确认的
情况下
{
dk=openFileDialog1.FileName;//将获取的文件名字符串赋值给
this.richTextBox1.Text=newdk.FileName;
richTextBox1.LoadFile(openFileDialog1.FileName,
RichTextBoxStreamType.PlainText);
}
dk
}
private
void
保存ToolStripMenuItem_Click(
objectsender,
EventArgse)
{
try//
使用语句处理异常情况
{
StreamWriterbc=newStreamWriter(name,false,
Encoding.GetEncoding("gb2312"));
stringbaocun=richTextBox1.Text;
bc.Write(baocun);
bc.Close();
}
catch
{
saveFileDialog1.Filter=
"纯文本(*.txt)|*.txt|10
信管一班陈勇
c#源文件
(*.cs)|*.cs";
saveFileDialog1.OverwritePrompt=
true;
if(richTextBox1.Text==
"")
{
MessageBox.Show("请输入要保存的内容
",
"提示
");
}
else
{
if
(saveFileDialog1.ShowDialog()==
DialogResult
.OK)
{
false
StreamWriterc=newStreamWriter(saveFileDialog1.FileName,
Encoding.GetEncoding("gb2312"));//gb2312国标,中国自己的
name=saveFileDialog1.FileName;
stringd=richTextBox1.Text;//将文本中的字符串赋值给局部变
量
c.Write(d);
//将字符串重载
}
}
}
}
private
void
另存为aToolStripMenuItem_Click(
objectsender,
EventArgse)//类
似保存
{
if(richTextBox1.Modified==
true)
{
DialogResultclose=MessageBox.Show("是否保存已修改的内容
MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning);
switch(close)
"提示",
{
caseDialogResult.Yes:
this.保存ToolStripMenuItem_Click(sender,e);
try//使用语句处理异常情况
{
StreamWritersww=newStreamWriter(name,false,
Encoding.GetEncoding("gb2312"));
stringdata=richTextBox1.Text;
sww.Write(data);
sww.Close();
}
catch
{
saveFileDialog1.Filter="文件t|*.txt";
saveFileDialog1.OverwritePrompt=true;
if(saveFileDialog1.ShowDialog()==DialogResult
.OK)
{
StreamWriter
StreamWritersww=new
(saveFileDialog1.FileName,false,Encoding.GetEncoding("gb2312"));
name=saveFileDialog1.FileName;
stringdata=richTextBox1.Text;
sww.Write(data);
sww.Close();
}
}
break;
caseDialogResult.No:
richTextBox1.Clear();
break;
caseDialogResult.Cancel:
break;
}
}
}
private
void
撤销ToolStripMenuItem_Click(
objectsender,
EventArgse)
{
richTextBox1.Undo();
//撤销
}
private
voidrichTextBox1_TextChanged(
object
sender,
EventArgse)
{
if(richTextBox1==
null)
{
剪切DToolStripMenuItem.Enabled=
false;
}
else
{
剪切DToolStripMenuItem.Enabled=
true;
}
if(richTextBox1.Text==
null)
{
撤销ToolStripMenuItem.Enabled=
false;//如果richTextBox1
为空则无法执
行
}
else
{
撤销ToolStripMenuItem.Enabled=
true;
}
if(richTextBox1.Text==
null)//复制
{
复制ToolStripMenuItem.Enabled=
false;
}
else
{
复制ToolStripMenuItem.Enabled=
true;
}
if(richTextBox1.Text==
null)//粘贴
{
粘贴ToolStripMenuItem.Enabled=
false;
}
else
{
粘贴ToolStripMenuItem.Enabled=
true;
}
if(richTextBox1.Text==
null)
{
删除ToolStripMenuItem.Enabled=
false;
}
else
{
删除ToolStripMenuItem.Enabled=true;
}
if(richTextBox1.Text==
null)
{
查找替换ToolStripMenuItem.Enabled=
false;
}
else
{
查找替换ToolStripMenuItem.Enabled=
true;
}
this
this.toolStripStatusLabel5.Text="当前文档字数合计为
.richTextBox1.Text.Length;
this.toolStripStatusLabel6.Text=datetime.now.Tosting();
"+
}
private
void
剪?
切DToolStripMenuItem_Click(
objectsender,
EventArgse)
{
richTextBox1.Cut();
//剪切
}
private
void
复制ToolStripMenuItem_Click(
objectsender,
EventArgse)
{
richTextBox1.Copy();
//复制
}
private
void
粘贴ToolStripMenuItem_Click(
objectsender,
EventArgse)
{
richTextBox1.Paste();
//粘贴
}
private
void
删除ToolStripMenuItem_Click(
objectsender,
EventArgse)
{
richTextBox1.SelectedText=
"";//
删除
}
private
void
撤销ToolStripMenuItem1_Click(
objectsender,
EventArgse)
{
richTextBox1.Undo();
}
privatevoid全选ToolStripMenuItem1_Click(objectsender,EventArgse)
{
richTextBox1.SelectAll();
}
privatevoid剪切ToolStripMenuItem1_Click(objectsender,EventArgse)
{
richTextBox1.Cut();
}
privatevoid复制ToolStripMenuItem1_Click_1(objectsender,EventArgse)
{
richTextBox1.Copy();
}
privatevoidForm1_FormClosing(objectsender,FormClosingEventArgse)
{
}
private
void
saveFileDialog1_FileOk(
objectsender,
CancelEventArgs
e)
{
}
private
void
自动换行ToolStripMenuItem_Click(
object
sender,EventArgse)
{
richTextBox1.WordWrap=
true;
}
private
void
打开ToolStripMenuItem_Click(
object
sender,
EventArgs
e)
{
this
.openFileDialog1.Title=
"打开";
this
.openFileDialog1.Filter=
"文本文件t(*.txt;*.rtf)|*.txt;*.rtf|
所有文
件t(*.*)|*.*"
;
this
.openFileDialog1.FilterIndex=1;
this
.openFileDialog1.InitialDirectory=
"桌面";
this
.openFileDialog1.ShowReadOnly=
true
;
this
.openFileDialog1.ReadOnlyChecked=
false
;
this
.openFileDialog1.FileName=
"";
if
(
this
.openFileDialog1.ShowDialog()==
DialogResult
.OK)
{
this
.Text=this.openFileDialog1.FileName;
StreamReaderstr=
newStreamReader
(
this
.openFileDialog1.FileName,
Encoding.Default);
this
.richTextBox1.Text=str.ReadToEnd();
str.Close();
}
}
privatevoid页面属性ToolStripMenuItem_Click(objectsender,EventArgse)
{
printDialog1.Document=printDocument1;
printDialog1.ShowDialog();
}
privatevoid粘贴ToolStripMenuItem1_Click(objectsender,EventArgse)
{
richTextBox1.Paste();
}
privatevoid复制ToolStripMenuItem1_Click(objectsender,EventArgse)
{
richTextBox1.Copy();
}
privatevoid粘贴ToolStripMenuItem1_Click_1(objectsender,EventArgse)
{
richTextBox1.Paste();
}
privat