c#作业二: 用C#实现一个记事本
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#实现一个记事本相关推荐
- C#作业二——记事本
C#作业二--记事本 一.程序设计题:使用C#窗体应用实现记事本 二.功能说明 实现了记事本的主要功能,如下. (1)文件:新建.保存.打开.另存为和退出: (2)编辑:撤销.复制.剪切.粘贴 ...
- 大学计算机在线作业答案,上海交通大学《计算机》在线作业二参考答案
<上海交通大学<计算机>在线作业二参考答案>由会员分享,可在线阅读,更多相关<上海交通大学<计算机>在线作业二参考答案(13页珍藏版)>请在人人文库网上 ...
- 吉大19秋学期计算机应用基础在线作业,吉大11春学期《计算机应用基础》在线作业二答案...
吉大11春学期<计算机应用基础>在线作业二答案 2011-05-18 08:05:26 389 有学员问关于吉大11春学期<计算机应用基础>在线作业二答案的题目的参考答案和解析 ...
- 计算机应用基础吉林大学作业,吉林大学21春学期《计算机应用基础》在线作业二-0001.doc...
吉林大学21春学期<计算机应用基础>在线作业二-0001.doc 吉林大学21春学期计算机应用基础在线作业二-0001试卷总分100 得分100一.单选题 共 20 道试题,共 80 分1 ...
- 福师2021计算机应用基础,2021福师《计算机应用基础》在线作业二【满分答案】...
2021福师<计算机应用基础>在线作业二[满分答案]奥鹏作业满分答案 福师<计算机应用基础>在线作业二-0001 试卷总分:100 得分:100 一.单选题 (共 40 道试 ...
- Windows系统下制作一个记事本以语音方式读出你输入的文字 以及放到开机启动项,开机自启动读出语音!
右键新建一个记事本,输入下面代码: 代码: createobject("SAPI.spvoice").speak"123" 在speak里面输入你想让他读出来的 ...
- 计算机在线作业office,16春地大《计算机级等级考试Office》在线作业二.doc
16春地大<计算机级等级考试Office>在线作业二 谋学网 HYPERLINK "" 地大<计算机一级等级考试Offi>在线作业二 一.单选题(共 17 ...
- 计算机应用基础中什么是桌面,福师《计算机应用基础》在线作业二 Windows中进行系统设置的工具集是 用户可以根据自己的爱好更改显示器 键盘 鼠标器 桌面等硬件的设置...
福师<计算机应用基础>在线作业二 Windows中进行系统设置的工具集是 用户可以根据自己的爱好更改显示器 键盘 鼠标器 桌面等硬件的设置 (12页) 本资源提供全文预览,点击全文预览即可 ...
- day1 作业二:多级菜单操作
作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入b返回上一层,输入q退出整个程序 思路:三级菜单第一级别是省,第二级别是市,第三级别是县,用户 ...
最新文章
- Python 百度面试题
- MySQL 5.7.10 免安装配置
- php需要掌握什么,php专业需要掌握哪些知识
- JS - 按钮倒计时
- Android--数据持久化之内部存储、Sdcard存储
- 在Sql Server 2008上安装SDE 9.3
- python语言翻译成汇编语言_计原 || 1计算机语言发展与计算机层次结构
- UvaLive 6664 Clock Hands
- c语言实用程序6,C语言实用程序设计100例流程图
- jeb配置java环境_android逆向工具Jeb第一次启动
- 教育培训机构拼团招生小程序公众号
- 盘点14个因安全事故引咎辞职的高管领导
- 通过ThreadLoad实现线程范围内的共享变量
- 什么是计算机网络AP,AP与AC的区别是什么,拓扑网络知识。
- 网页上传文件获取地址的问题
- JavaScript模块化编程实例——天气预报
- 网络对战五子棋(来一起PK鸭)
- 计算机基本操作评课记录,《Word的基本操作》评课稿--李存业
- 被忽视的钣金零件外观设计
- Puppeteer通过evaluate执行脚本获取cookie