项目一文本编辑器设计与实现

  • 格式:doc
  • 大小:91.50 KB
  • 文档页数:10

福建交通职业技术学院教案纸 第 1 页

课程: C# Windows程序设计 学年 第_ _学期 第 周 月 日

教 学 内 容 备 注

项目一: 文本编辑器的设计与实现

【项目背景】

文本编辑器有两类:单文档和多文档文本编辑器。单文档文本编辑器一次只能打开一个文件,如果要打开另一个文件,必须关闭当前打开的文件,微软的写字板程序就是单文档字处理程序。多文档文本编辑器允许同时打开多个文件,每个文件占用一个子窗口,微软的Word程序就是多文档字处理程序。本项目主要介绍建立单文档文本编辑器的方法,通过分析现有文本编辑器的功能与操作过程,利用C#开发一个新的文本编辑器。

【主要内容与技能要求】

(1) 会进行复杂窗口设计

(2) 会对常见的文本编辑功能进行分析与编码实现

(3) 会设计多文档窗口

一、预备知识

本项目主要利用RichTextBox控件来构成文本编辑区域。

1、RichTextBox控件的主要属性

属性SelectedText、SelectionLength、SelectionStart:

属性SelectionFont:

属性SelectionColor:

属性Lines:

属性Modified:

事件SelectionChange:

事件TextChanged:

2、RichTextBox控件的主要方法

方法Clear():

方法Copy()、Cut()、Paste():

方法SelectAll():

方法Find():

方法SaveFile()和LoadFile(): 福建交通职业技术学院教案纸 第 2 页

课程: C# Windows程序设计 学年 第_ _学期 第 周 月 日

教 学 内 容 备 注

方法Undo():

方法Redo():

二、功能设计与实现

1、剪贴板功能

放RichTextBox控件到窗体。属性Name=richTextBox1,Dock=Fill,Text=""。

private void menuItemEditCut_Click(object sender,EventArgs e)

{ richTextBox1.Cut(); } //剪切

private 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,EventArgs e)

{ richTextBox1.Redo(); } //恢复

2、存取文件功能

文本编辑器都应具有文件存取功能,菜单顶级菜单项“文件”的弹出菜单中一般包括如下菜单项:新建、打开、关闭、保存和另存为等。需要用到打开文件对话框(OpenFileDialog控件)和保存文件对话框(SaveFileDialog控件)。和

两个对话框的常用属性和方法:

属性Filter:例如Filter=“纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*”

属性FilterIndex:

属性FileName:

属性InitialDirectory:

属性DefaultExt:

方法ShowDialog():

存取文件功能实现如下: 福建交通职业技术学院教案纸 第 3 页

课程: C# Windows程序设计 学年 第_ _学期 第 周 月 日

教 学 内 容 备 注

把OpenFileDialog和SaveFileDialog控件放到窗体中。为菜单增加顶级菜单项:文件,为其弹出菜单增加菜单项:新建、打开...、保存...、另存为...、退出。修改这些菜单项的Name属性分别为:mainMenuFile、menuItemFileNew、menuItemFileOpen、menuItemFileSave、menuItemFileSaveAs、menuItemFileExit。

为Form1类中定义变量:string s_FileName=“”,记录当前编辑的文件名

private void menuItemFileNew_Click(object sender,EventArgs e) //新建文件菜单项

{ richTextBox1.Text=""; //或richTextBox1.Clear();

s_FileName=""; //新建文件没有文件名。

}

private void menuItemFileOpen_Click( //打开文件菜单项

object sender,EventArgs e)

{ if(openFileDialog1.ShowDialog()==DialogResult.OK)

{ s_FileName=openFileDialog1.FileName;

richTextBox1.LoadFile(openFileDialog1.FileName,

RichTextBoxStreamType.PlainText);

}

}

private void menuItemFileSaveAs_Click( //另存为菜单项

object sender,EventArgs e)

{ if(saveFileDialog1.ShowDialog()==DialogResult.OK)

{ s_FileName=saveFileDialog1.FileName;

richTextBox1.SaveFile(saveFileDialog1.FileName,

RichTextBoxStreamType.PlainText);

} //注意存取文件类型应一致。

}

private void menuItemSaveFile_Click( //保存文件菜单项

object sender,EventArgs e)

{ if(s_FileName.Length!=0) 福建交通职业技术学院教案纸 第 4 页

课程: C# Windows程序设计 学年 第_ _学期 第 周 月 日

教 学 内 容 备 注

richTextBox1.SaveFile(s_FileName,

RichTextBoxStreamType.PlainText);

else

menuItemFileSaveAs_Click(sender,e);

}

private void menuItemExit_Click( //退出菜单项

object sender,EventArgs e)

{ Close(); }

3、 修改字体

为修改使用的字体,可打开字体对话框FontDialog,选择指定字体。可以按两种方式修改字体,如果未选中文本,表示以后键入的字符将按选定字体输入。如果选中文本,则仅修改选定文本的字体。修改字符颜色也根据同样原则。修改字体要用到FontDialog控件

可以用FontDialog对话框选定指定字体,FontDialog控件和OpenDialog控件的属性和方法基本相同,这里只介绍属性Font,它代表用FontDialog对话框选定的字体。

修改字体实现方法:

放FontDialog控件到窗体,属性Name=fontDialog1。为菜单增加顶级菜单项:格式,属性Name为mainMenuModel,为其弹出菜单增加菜单项:字体,属性Name为menuItemModelFont,为菜单“格式|字体”菜单项增加单击事件处理函数如下:

private void menuItemModelFont_Click(

object sender,EventArgs e)

{ if(fontDialog1.ShowDialog()==DialogResult.OK)

richTextBox1.SelectionFont=fontDialog1.Font;

}

4、About对话框

单击菜单"项目|添加Windows窗体"菜单项,弹出对话框,添加一个窗体,修改formAbout窗体属性StartPosition=CenterParent,修改属性MaximizeBox=False,MinimizeBox=False,属性FormBorderStyle=FixedDialog

标题为“确定”按钮单击事件处理函数如下:

private void button1_Click(object sender,EventArgs e) 福建交通职业技术学院教案纸 第 5 页

课程: C# Windows程序设计 学年 第_ _学期 第 周 月 日

教 学 内 容 备 注

{ Close(); }