C#实现一个简单记事本

  • 一、功能说明与实验目标
  • 二、完成过程
    • 1.菜单
      • 1.1 实现功能
        • 1.1.1 文件(F)
        • 1.1.2 编辑(E)
        • 1.1.3 格式(O)和 查看(V)
        • 1.1.4 帮助(H)
    • 2.工具栏
    • 3.计时器
    • 4.窗体
  • 三、运行结果
  • 四、总结
  • 五、源码地址

一、功能说明与实验目标

  • 设计一个Windows应用程序——记事本。通过本章的学习,可以进一步掌握MenuStrip(菜单)、ToolStrip(工具栏)、RichTextBox(高级文本框)和StatusStrip(状态栏控件)等控件的使用,以及如何使用CommonDialog(公共对话框)实现对文本的存取、格式设置等操作。

二、完成过程

1.菜单

1.1 实现功能

1.1.1 文件(F)

Text属性 Name属性 ShortcutKeys属性(快捷键) ShowShortcutKeys属性
文件(&F) tsmiFile None
新建(&N) tsmiNew Ctrl+N True
打开(&O) tsmiOpen Ctrl+O True
保存(&S) tsmiSave Ctrl+S True
另存为(&A) tsmiSaveAs None
退出(&X) tsmiClose None

代码:

 // 新建(N)private void 新建NCtrlNToolStripMenuItem_Click(object sender, EventArgs e){// 判断当前文件是否从磁盘打开,或者新建时文档不为空,并且文件未被保存if (b == true || rtxtNotepad.Text.Trim() != ""){// 若文件未保存if (s == false){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(sdlgNotepad.FileName);}s = true;rtxtNotepad.Text = "";break;case "No":b = false;rtxtNotepad.Text = "";break;}}}}//打开(O)private void tsmiOpen_Click(object sender, EventArgs e){if (b == true || rtxtNotepad.Text.Trim() != ""){if (s == false){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(sdlgNotepad.FileName);}s = true;break;case "No":b = false;rtxtNotepad.Text = "";break;}}}odlgNotepad.RestoreDirectory = true;if ((odlgNotepad.ShowDialog() == DialogResult.OK) && odlgNotepad.FileName != ""){rtxtNotepad.LoadFile(odlgNotepad.FileName);//打开代码语句b = true;}s = true;}// 保存(S)private void tsmiSave_Click(object sender, EventArgs e){//由于这个没有改Name属性,所以和图片不太一样,对照就行// 若文件从磁盘打开并且修改了其内容if (b == true && rtxtNotepad.Modified == true){rtxtNotepad.SaveFile(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;}}// 另存为(A)private void tsmiSaveAs_Click(object sender, EventArgs e){if (sdlgNotepad.ShowDialog() == DialogResult.OK){rtxtNotepad.SaveFile(sdlgNotepad.FileName);s = true;}}// 退出(E)private void tsmiClose_Click(object sender, EventArgs e){Application.Exit();//程序结束}

实现效果:

1.1.2 编辑(E)

Text属性 Name属性 ShortcutKeys属性(快捷键) ShowShortcutKeys属性
编辑(&E) tsmiEdit None
撤销(&U) tsmiUndo Ctrl+Z True
复制(&C) tsmiCopy Ctrl+C True
剪切(&T) tsmiCut Ctrl+X True
粘贴(&P) tsmiPaste Ctrl+V True
全选(&A) tsmiSelectAll Ctrl+A True
日期(&D) tsmiDate F5 True

代码:

        // 撤销(Z)private void tsmiUndo_Click(object sender, EventArgs e){rtxtNotepad.Undo();//撤销}private void tsmiCopy_Click(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();//全选}private void tsmiDate_Click(object sender, EventArgs e){rtxtNotepad.AppendText(System.DateTime.Now.ToString());//显示当前日期}

结果截图:

1.1.3 格式(O)和 查看(V)

Text属性 Name属性 Check属性
格式(&O) tsmiFormat False
自动换行(&W) tsmiAuto True
字体(&F) tsmiFont False
Text属性 Name属性 Checked属性
查看(&V) tsmiView False
工具栏(&T) tsmiToolStrip True
状态栏(&S) tsmiStatusStrip True

“格式(O)”区代码:

  // 自动换行private void tsmiAuto_Click(object sender, EventArgs e){if (tsmiAuto.Checked == false){tsmiAuto.Checked = true;            // 选中该菜单项rtxtNotepad.WordWrap = true;        // 设置为自动换行}else{tsmiAuto.Checked = false;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;}}

结果截图:

“查看(V)”区代码:

 // 工具栏private void tsmiToolStrip_Click(object sender, EventArgs e){Point point;if (tsmiToolStrip.Checked == true){// 隐藏工具栏时,把坐标设为(0,24),因为菜单的高度为24point = new Point(0, 24);tsmiToolStrip.Checked = false;toolStrip1.Visible = false;// 设置多格式文本框左上角位置rtxtNotepad.Location = point;// 隐藏工具栏后,增加文本框高度rtxtNotepad.Height += toolStrip1.Height;}else{/* 显示工具栏时,多格式文本框左上角位置的位置为(0,49),因为工具栏的高度为25,加上菜单的高度24后为49 */point = new Point(0, 49);tsmiToolStrip.Checked = true;toolStrip1.Visible = true;rtxtNotepad.Location = point;rtxtNotepad.Height -= toolStrip1.Height;}}// 状态栏private void tsmiStatusStrip_Click(object sender, EventArgs e){if (tsmiStatusStrip.Checked == true){tsmiStatusStrip.Checked = false;stsNotepad.Visible = false;rtxtNotepad.Height += stsNotepad.Height;}else{tsmiStatusStrip.Checked = true;stsNotepad.Visible = true;rtxtNotepad.Height -= stsNotepad.Height;}}

结果截图:

1.1.4 帮助(H)

Text属性 Name属性
帮助(&H) tsmiHelp
关于记事本(&A) tsmiAbout

代码:

 // 关于记事本private void tsmiAbout_Click(object sender, EventArgs e){frmAbout ob_FrmAbout = new frmAbout();ob_FrmAbout.Show();}

结果截图:

关于记事本具体实现:

控件类型 控件名称 属性 设置结果
From From2 Name frmAbout
From From2 Text 关于记事本
From From2 StartPosition CenterScreen
From From2 MaximizeBox False
From From2 AutoSizeMode GrowAndShrink
Button Button1 Name btnOk
Button Button1 Text 确定
Label Label1 Text 多功能记事本
LinkLabe LinkLabel Text 如有问题,请点这里

代码:

       private void btnOk_Click(object sender, EventArgs e){this.Close();}private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e){System.Diagnostics.Process.Start("http://www.baidu.com");}

实现效果:

2.工具栏

代码:

// 快捷工具栏private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e){int n;// 变量n用来接收按下按钮的索引号从0开始n = toolStrip1.Items.IndexOf(e.ClickedItem);switch (n){case 0:新建NCtrlNToolStripMenuItem_Click(sender, e);break;case 1:tsmiOpen_Click(sender, e);break;case 2:tsmiSave_Click(sender, e);break;/*case 3:tsmiCopy_Click(sender, e);break;*/ // 我们不用case3case 4:tsmiCut_Click(sender, e);break;case 5:tsmiPaste_Click(sender, e);break;/*case 6:tsmiPaste_Click(sender, e);break; */ // 我们不用case6case 7:tsmiAbout_Click(sender, e);break;}}

实现效果:

3.计时器

代码:

  // 计时器private void tmrNotepad_Tick(object sender, EventArgs e){tssLbl2.Text = System.DateTime.Now.ToString();}

4.窗体

代码:

private void frmNotepad_SizeChanged(object sender, EventArgs e)
{frmNotepad ob_frmNotepad = new frmNotepad();tssLbl1.Width = this.Width / 2 - 12;tssLbl2.Width = tssLbl1.Width;
}

三、运行结果



四、总结

在实验操作过程中,不慎将部分代码删除而导致窗体崩溃,无法显示,也不知怎么的无法撤退。。。在百度无门后,探索了一番VS,突然发现它有自动纠错功能,只要鼠标点一下,就能帮助把代码修复好,如”添加方法“,自动帮我打出几行代码,窗体也回归正常。也遇到过“该项目不知道如何运行配置文件”的问题,搜索一番才知道是VS少下了一些组件。看来不仅得训练代码能力,熟练地使用工具也很重要。


五、源码地址

作业二仓库地址

c#作业二: 用C#实现一个记事本相关推荐

  1. C#作业二——记事本

    C#作业二--记事本 一.程序设计题:使用C#窗体应用实现记事本 二.功能说明 实现了记事本的主要功能,如下. ​ (1)文件:新建.保存.打开.另存为和退出: ​ (2)编辑:撤销.复制.剪切.粘贴 ...

  2. 大学计算机在线作业答案,上海交通大学《计算机》在线作业二参考答案

    <上海交通大学<计算机>在线作业二参考答案>由会员分享,可在线阅读,更多相关<上海交通大学<计算机>在线作业二参考答案(13页珍藏版)>请在人人文库网上 ...

  3. 吉大19秋学期计算机应用基础在线作业,吉大11春学期《计算机应用基础》在线作业二答案...

    吉大11春学期<计算机应用基础>在线作业二答案 2011-05-18 08:05:26 389 有学员问关于吉大11春学期<计算机应用基础>在线作业二答案的题目的参考答案和解析 ...

  4. 计算机应用基础吉林大学作业,吉林大学21春学期《计算机应用基础》在线作业二-0001.doc...

    吉林大学21春学期<计算机应用基础>在线作业二-0001.doc 吉林大学21春学期计算机应用基础在线作业二-0001试卷总分100 得分100一.单选题 共 20 道试题,共 80 分1 ...

  5. 福师2021计算机应用基础,2021福师《计算机应用基础》在线作业二【满分答案】...

    2021福师<计算机应用基础>在线作业二[满分答案]奥鹏作业满分答案 福师<计算机应用基础>在线作业二-0001 试卷总分:100  得分:100 一.单选题 (共 40 道试 ...

  6. Windows系统下制作一个记事本以语音方式读出你输入的文字 以及放到开机启动项,开机自启动读出语音!

    右键新建一个记事本,输入下面代码: 代码: createobject("SAPI.spvoice").speak"123" 在speak里面输入你想让他读出来的 ...

  7. 计算机在线作业office,16春地大《计算机级等级考试Office》在线作业二.doc

    16春地大<计算机级等级考试Office>在线作业二 谋学网 HYPERLINK "" 地大<计算机一级等级考试Offi>在线作业二 一.单选题(共 17 ...

  8. 计算机应用基础中什么是桌面,福师《计算机应用基础》在线作业二 Windows中进行系统设置的工具集是 用户可以根据自己的爱好更改显示器 键盘 鼠标器 桌面等硬件的设置...

    福师<计算机应用基础>在线作业二 Windows中进行系统设置的工具集是 用户可以根据自己的爱好更改显示器 键盘 鼠标器 桌面等硬件的设置 (12页) 本资源提供全文预览,点击全文预览即可 ...

  9. day1 作业二:多级菜单操作

    作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入b返回上一层,输入q退出整个程序 思路:三级菜单第一级别是省,第二级别是市,第三级别是县,用户 ...

最新文章

  1. Python 百度面试题
  2. MySQL 5.7.10 免安装配置
  3. php需要掌握什么,php专业需要掌握哪些知识
  4. JS - 按钮倒计时
  5. Android--数据持久化之内部存储、Sdcard存储
  6. 在Sql Server 2008上安装SDE 9.3
  7. python语言翻译成汇编语言_计原 || 1计算机语言发展与计算机层次结构
  8. UvaLive 6664 Clock Hands
  9. c语言实用程序6,C语言实用程序设计100例流程图
  10. jeb配置java环境_android逆向工具Jeb第一次启动
  11. 教育培训机构拼团招生小程序公众号
  12. 盘点14个因安全事故引咎辞职的高管领导
  13. 通过ThreadLoad实现线程范围内的共享变量
  14. 什么是计算机网络AP,AP与AC的区别是什么,拓扑网络知识。
  15. 网页上传文件获取地址的问题
  16. JavaScript模块化编程实例——天气预报
  17. 网络对战五子棋(来一起PK鸭)
  18. 计算机基本操作评课记录,《Word的基本操作》评课稿--李存业
  19. 被忽视的钣金零件外观设计
  20. Puppeteer通过evaluate执行脚本获取cookie

热门文章

  1. 【TensorFlow】Mnist数据集 - RNN
  2. ABP 详解系列4:ABP框架的基础配置及依赖注入讲解
  3. 概率论与数理统计学习笔记——第二十二讲——二元均匀分布,二元正态分布
  4. 数字温度计的c语言编程,DS18B20数字温度计C程序(能显示负温)
  5. 《电路基础》同相运算放大器
  6. 装备科研项目过程通用控制要求
  7. ADS2021学习笔记(一)
  8. 网页前端知识汇总(四)——网页前端搜索框用get或者post提交方式的区别
  9. 基于哈夫曼算法的文件压缩软件
  10. Dell大连07校园招聘10月18日在线宣讲实录(完全彩色版)