《用C#编写文本编辑器实验报告.docx》由会员分享,可在线阅读,更多相关《用C#编写文本编辑器实验报告.docx(11页珍藏版)》请在三一办公上搜索。
1、用C#编写文本编辑器实验报告用C#编写“文本编辑器”实验报告 实验 3 项目名称: 文本编辑器 1、实验目的和要求 通过本实验,使得学生理解操作系统目录与文件的概念,掌握文件流的读写操作。要求编写一个满足以下条件的文本编辑器程序。 程序界面与操作系统中的记事本界面类似。 程序可以打开、保存和编辑txt文本文件。 程序可以查找和替换文本内容中的指定字符串 2、程序代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawin
2、g; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace 记事本 public partial class frmNotepad : Form bool b = false;/布尔变量b用于判断文件是新建的还是从磁盘打开。true表示文件从磁盘打开的,false表示文件是新建的,默认值为false bool s = true;/布尔变量s用于判断文件是否被保存。false表示未被保存,默认值为true public frmNotepad InitializeCo
3、mponent; /*多格式文本框TextChange的事件代码*/ private void rtxtNotepad_TextChanged(object sender, EventArgs e) /文本被修改后,设置s为false,表示文件未被保存 s = false; /*菜单代码*/ private void tsmiNew_Click(object sender, EventArgs e) /判断当前文件是否从磁盘打开,或者新建时文档不为空,并且文件未被保存 if (b = true | rtxtNotepad.Text.Trim != ) /若文件未被保存 if (s = fals
4、e) string result; result = MessageBox.Show(文件尚未保存,是否保存?, 保存文件, MessageBoxButtons.YesNoCancel).ToString; switch (result) case Yes: /若文件是从磁盘打开的 if (b = true) /按文件打开的路径保存文件 rtxtNotepad.SaveFile(odlgNotepad.FileName); /若文件不是从磁盘打开的 else if (sdlgNotepad.ShowDialog = DialogResult.OK) rtxtNotepad.SaveFile(s
5、dlgNotepad.FileName); s = true; rtxtNotepad.Text = ; break; case No: b = false; rtxtNotepad.Text = ; break; /*菜单代码*/ private void tsmiOpen_Click(object sender, EventArgs e) if (b = true | rtxtNotepad.Text.Trim != ) string result; result = MessageBox.Show(文件尚未保存,是否保存?, 保存文件, MessageBoxButtons.YesNoCa
6、ncel).ToString; switch (result) case Yes: if (b = true) rtxtNotepad.SaveFile(odlgNotepad.FileName); else if (sdlgNotepad.ShowDialog = DialogResult.OK) rtxtNotepad.SaveFile(sdlgNotepad.FileName); s = true; rtxtNotepad.Text = ; break; case No: b = false; rtxtNotepad.Text = ; break; odlgNotepad.Restore
7、Directory = true; if (odlgNotepad.ShowDialog = DialogResult.OK) & odlgNotepad.FileName != ) rtxtNotepad.LoadFile(odlgNotepad.FileName); b = true; s = true; /*菜单代码*/ private void tsmiSave_Click(object sender, EventArgs e) /若文件从磁盘打开并且修改了其内容 if (b = true & rtxtNotepad.Modified = true) rtxtNotepad.SaveF
8、ile(odlgNotepad.FileName); s = true; else if (b = false & rtxtNotepad.Text.Trim != & sdlgNotepad.ShowDialog = DialogResult.OK) rtxtNotepad.SaveFile(sdlgNotepad.FileName); s = true; b = true; odlgNotepad.FileName = sdlgNotepad.FileName; /*菜单代码*/ private void tsmiSaveAs_Click(object sender, EventArgs
9、e) if (sdlgNotepad.ShowDialog = DialogResult.OK) rtxtNotepad.SaveFile(sdlgNotepad.FileName); s = true; /*菜单代码*/ private void tsmiClose_Click(object sender, EventArgs e) Application.Exit; /菜单代码 private void tsmiUndo_Click(object sender, EventArgs e) rtxtNotepad.Undo; /菜单代码 private void tsmiCopy_Click
10、(object sender, EventArgs e) rtxtNotepad.Copy; /菜单代码 private void tsmiCut_Click(object sender, EventArgs e) rtxtNotepad.Cut; /菜单代码 private void tsmiPaste_Click(object sender, EventArgs e) rtxtNotepad.Paste; /菜单代码 private void tsmiSelectAll_Click(object sender, EventArgs e) rtxtNotepad.SelectAll; /菜单
11、代码 private void tsmiDate_Click(object sender, EventArgs e) rtxtNotepad.AppendText(System.DateTime.Now.ToString); /菜单代码 private void tsmiAuto_Click(object sender, EventArgs e) if (tsmiAuto.Checked = false) tsmiAuto.Checked = true;/选中该菜单项 rtxtNotepad.WordWrap = true;/设置为自动换行 else tsmiAuto.Checked = fa
12、lse; rtxtNotepad.WordWrap = false; /菜单代码 private void tsmiFont_Click(object sender, EventArgs e) fdlgNotepad.ShowColor = true; if (fdlgNotepad.ShowDialog = DialogResult.OK) rtxtNotepad.SelectionColor = fdlgNotepad.Color; rtxtNotepad.SelectionFont = fdlgNotepad.Font; /菜单代码 private void tsmiToolStrip_
13、Click(object sender, EventArgs e) Point point; if (tsmiToolStrip.Checked = true) point = new Point(0, 25);/隐藏工具栏时,把坐标设为,因为菜单的高度为24 tsmiToolStrip.Checked = false; tlsNotepad.Visible = false; rtxtNotepad.Location = point;/设置多格式文本框左上角的位置 rtxtNotepad.Height += tlsNotepad.Height;/隐藏工具栏后,增加文本框的高度 else /显示
14、工具栏时,多格式文本框左上角的位置为,因为工具栏的高度25加上菜单的高度25=50 point = new Point(0, 50); tsmiToolStrip.Checked = true; tlsNotepad.Visible = true; rtxtNotepad.Location = point; rtxtNotepad.Height -= tlsNotepad.Height; /菜单代码 private void tsmiStatusStrip_Click(object sender, EventArgs e) if (tsmiStatusStrip.Checked = true)
15、 tsmiStatusStrip.Checked = false; stsNotepad.Visible = false; rtxtNotepad.Height += stsNotepad.Height; else tsmiStatusStrip.Checked = true; stsNotepad.Visible = true; rtxtNotepad.Height -= stsNotepad.Height; /菜单代码 private void tsmiAbout_Click(object sender, EventArgs e) frmAbout ob_FrmAbout = new fr
16、mAbout; ob_FrmAbout.Show; private void tlsNotepad_ItemClicked(object ToolStripItemClickedEventArgs e) int n;/变量n用来接收按下按钮的索引号 n = tlsNotepad.Items.IndexOf(e.ClickedItem); switch (n) case 1: tsmiNew_Click(sender, e); break; case 2: tsmiOpen_Click(sender, e); break; case 3: tsmiSave_Click(sender, e); b
17、reak; case 4: tsmiCut_Click(sender, e); break; case 5: tsmiCopy_Click(sender, e); break; case 6: tsmiPaste_Click(sender, e); break; case 7: tsmiAbout_Click(sender, e); break; /计时器控件代码 private void tmrNotepad_Tick(object sender, EventArgs e) tssLbl2.Text = System.DateTime.Now.ToString; sender, /窗体的sizechanged事件代码(为使得改变窗体大小时,状态栏随之改变) private void frmNotepad_SizeChanged(object sender, EventArgs e) frmNotepad ob_frmNotepad = new frmNotepad; tssLbl1.Width = this.Width / 2 - 12; tssLbl2.Width = tssLbl1.Width; 3、实验结果及程序运行界面