作业三

  • 一、程序要求
  • 二、界面设计与核心代码
  • 三、结果截图与实验心得

一、程序要求

使用Visual C# 2019设计一个Windows应用程序——记事本,实现Windows自带的记事本的部分功能:具有文件的新建、打开、保存功能;文字的复制、粘贴、删除功能;字体类型、格式的设置功能;查看日期时间等功能,并且用户可以根据需要显示或者隐藏工具栏和状态栏,还可以任意更改字体的字体类型、大小和颜色,并在状态栏中显示时间。为了方便用户的操作,还在程序的窗体上放置了一个工具栏。

二、界面设计与核心代码

新建一个Windows窗体应用程序

窗体属性

菜单控件

工具栏控件
单击窗体左边会出现工具箱→ 找到“ToolStrip” →拖动到窗体中→单击工具栏→右下角属性→修改Name属性为“tlsNotepad”,右击工具栏→ 插入标准项,右击工具栏→ 编辑项 可以看到我们的按钮成员,在这里我们可以删除或者增加。

多格式文本框控件
单击窗体左边会出现工具箱→ 找到“RichTextBox” →拖动到窗体中→单击工具栏→右下角属性→修改Name属性为“rtxtNotepad”,Anchor属性选择“Top,Bottom,Left,Right”,这样当窗体大小改变时,RichTextBox控件的大小也会跟着改变

状态栏控件
添加StatusStrip控件,将其Name属性设为“stsNotepad”,将Dock属性设为“Bottom”再将Anchor属性设为“Bottom,Left,Right”。然后单击右边的按钮,打开【项集合编辑器】对话框,下拉列表中保留默认的选择“StatusLabel”,然后单击【添加】按钮,依次添加2个StatusLabel,并分别命名为“tssLbl1”和“tssLbl2”,再将tssLbl1的Text属性设为“就绪”, tssLbl2的Text属性设为“显示日期、时间”。

打开对话框
OpenFileDialog控件的Name属性为“odlgNotepad”,Filter属性设为“RTF文件|.rtf|所有文件|.*”。

保存对话框
SaveFileDialog控件的Name属性为“sdlgNotepad”,FileName属性改为“无标题”,Filter属性设为“RTF文件|*.rtf”。

字体对话框
FontDialog控件的Name属性为“fdlgNotepad”

计时器控件
Timer控件的Name属性设为“tmrNotepad”,Enabled(激活的可行的)属性设为“True”,Interval(间隔,间距,幕间时间)属性设为“1000”,表示1秒种触发一次Tick事件,即1秒钟改变一次时钟

界面

控件代码

public partial class frmNotepad : Form{          bool b = false;bool s = true;public frmNotepad(){InitializeComponent();}private void frmNotepad_Load(object sender, EventArgs e){}private void rtxtNotepad_TextChanged(object sender, EventArgs e){s = false;}private void tsmiFile_Click(object sender, EventArgs e){}private void tsmiNew_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;}}}}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;}private void tsmiSave_Click(object sender, EventArgs e){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;}}private void tsmiSaveAs_Click(object sender, EventArgs 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(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());}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;}}private void tsmiToolStrip_Click(object sender, EventArgs e){Point point;if (tsmiToolStrip.Checked == true){point = new Point(0, 24);tsmiToolStrip.Checked = false;tlsNotepad.Visible = false;rtxtNotepad.Location = point;rtxtNotepad.Height += tlsNotepad.Height;}else{point = new Point(0, 49);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){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 frmAbout();ob_FrmAbout.Show();}      }

工具栏代码

 private void tlsNotepad_ItemClicked(object sender, ToolStripItemClickedEventArgs e){int n;n = tlsNotepad.Items.IndexOf(e.ClickedItem);switch (n){case 0:tsmiNew_Click(sender, e);break;case 1:tsmiOpen_Click(sender, e);break;case 2:tsmiSave_Click(sender, e);break;case 4:tsmiCut_Click(sender, e);break;case 5: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();}

三、结果截图与实验心得

结果截图

实验心得
SaveFileDialog控件的属性,Filter 要在对话框中显示的文件筛选器,标准格式:“文本文件(.txt)|.txt|所有文件(.)|.”,进行文件操作时,需要判断是从磁盘读入,还是新建的,从而判断是否被保存

用C#语言实现记事本(代码)相关推荐

  1. 极限切割异形图形描述脚本语言:Q代码指南

    极限切割异形图形描述脚本语言:Q代码指南 1. 基本指令 1.1 P 指令--外部参数定义 1.2 V 指令--内部参数定义 1.3 T 指令--外轮廓线起点定义(带刀具半径补偿) 1.4 S 指令- ...

  2. 微软亚研院副院长周明:从语言智能到代码智能

    11月6日上午,在中国中文信息学会和中国计算机学会联合创办的"语言与智能高峰论坛"上,微软亚洲研究院副院长周明,以<从语言智能到代码智能>为题,介绍了智能代码理解和生成 ...

  3. c语言一行代码太长,C语言修改一行代码,运行效率居然提升数倍,这个技巧你知道吗...

    对编译.链接.OS内核.系统调优等技术感兴趣的童鞋,不妨右上角关注一下吧,近期会持续更新相关方面的专题文章!引言 近日,网上看到一篇文章,分析数组访问的性能问题.文章经过一系列"有理有据&q ...

  4. C语言成绩abc,C语言常用经典代码:求三角形的面积、把百分制成绩转换为ABC等级制、其两个自然数的最大公约数和最小公倍数...

    C语言 经典常用代码 C语言常用经典代码 求三角形的面积. 把百分制成绩转换为ABC等级制. 其两个自然数的最大公约数和最小公倍数. 求输入n个数的平均值. 求一个数各个位上的数字之和. 求n个数的阶 ...

  5. 最值得阅读学习的 10 个 C 语言开源项目代码

    本文转载于: 最值得阅读学习的 10 个 C 语言开源项目代码 从扩展思路的角度来说,一个程序员应该好好读过这样一些代码: 一个操作系统内核 一个编译器(如:gcc,lua) 一个解释器(如:pyth ...

  6. 校运动会c语言程序编写,校运动会管理系统报告C语言(含完整代码)

    <校运动会管理系统报告C语言(含完整代码)>由会员分享,可在线阅读,更多相关<校运动会管理系统报告C语言(含完整代码)(20页珍藏版)>请在人人文库网上搜索. 1.目 录陈一. ...

  7. 冒泡排序c java c,冒泡排序,c语言冒泡排序法代码

    冒泡排序,c语言冒泡排序法代码 冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字 ...

  8. c语言安卓贪吃蛇代码下载,C语言贪吃蛇代码

    c语言编写贪吃蛇源代码,简单易懂,文件为VC源代码.如果你正在学习c语言,就来下载吧.很经典的 C语言贪吃蛇代码部分 #include #include #include#include #defin ...

  9. c语言小游戏代码矿井逃生_如何选择编程语言和逃生教程炼狱

    c语言小游戏代码矿井逃生 A few weeks ago, I posted about my experience attempting to learn JavaScript, C#, Pytho ...

  10. keil4如何将c语言转换成汇编语言_Keil 中关于C语言编译生成汇编代码函数名规则...

    在keil 中 C语言的函数有带参数和不带参数之分. 一般的资料里说fun(void)类型的函数不带参数,所以,keil编译器生成的汇编的调用地址(函数名) 为fun.这没有错.事实上,不管C语言的函 ...

最新文章

  1. Handler消息机制(十):HandlerThread源码解析
  2. 特权级——保护模式的特权级检查 DPL,RPL,CPL, 一致代码段,非一致代码段
  3. dbcontext mysql_.Net Core 2.0数据库第一种方法Mysql DB的Scaffold-DbContext
  4. ●BZOJ 1934 [Shoi2007]Vote 善意的投票
  5. 超级有用的15个mysqlbinlog命令
  6. 海思3519A上运行yolov3(一)——板卡配置(包括烧写内核、文件系统等)
  7. python处理excel的优势-Python处理Excel数据的坑,一文让你不用重复犯错
  8. Mysql 索引是如何实现的?
  9. spring cloud config git库文件搜索顺序
  10. 2021-06-27循环控制 mapSet
  11. 计算机如何恢复记事本,如何使用电脑桌面便签恢复误删除了的记事本数据内容?...
  12. 柳传志的回复:联想集团大裁员:公司不是家
  13. 应届毕业生应该怎样写简历?
  14. Google新人的成长思考
  15. HDU-1425 排序
  16. android只编译release版本
  17. 于typedef的用法总结
  18. HTML5网页动画效果
  19. English--基础知识点--9--used
  20. matlab中零向量,在MATLAB中的向量中的非零元素之间插入可变数量的零

热门文章

  1. 日志查找常用命令-超实用
  2. tracert、traceroute、mtr、WinMTR
  3. bp神经网络训练样本个数,bp神经网络训练时间
  4. 呼叫中心服务器怎么设置,呼叫中心服务器类型有哪几种?
  5. WMS系统仓库条码管理流程解析
  6. treetable怎么带参数_jQuery.treetable使用及异步加载
  7. oppoR9s计算机使用方法,oppor9s怎么进入Recovery模式
  8. 算法图解————K 近邻算法
  9. MC下载Forge/Optifine不想有广告怎么办
  10. STM8L101+si4463低功耗和自动唤醒配置