用C#代码实现记事本

一、功能说明
实现记事本功能:程序具有文件的新建、打开、保存功能;文字的复制、粘贴、删除功能;字体类型、格式的设置功能;查看日期时间等功能,并且用户可以根据需要显示或者隐藏工具栏和状态栏。

预期效果图:

二、主要属性效果
窗体属性:
Name:frmNotepad
Text:记事本
StartPosition:CenterScreen
Size:600, 450
菜单属性:

三、主要代码
(1)代码通用段
声明以下两个公共变量,他们都是布尔型的,“b”用于判断文件是新建的还是从磁盘打开的,“s”用于判断文件是否被保存。

(2) 多格式文本框代码
当多格式文本框中的文本发生改变后,应当设置布尔变量“s”的值为false,表示文件未保存。

(3)菜单代码
文件:
新建:

private void 新建NToolStripMenuItem_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){// 【保存】菜单代码//*************************************************************************//由于这个没有改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;}}

另存为:

 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 复制CCtrlCToolStripMenuItem_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){// 隐藏工具栏时,把坐标设为(0,24),因为菜单的高度为24point = new Point(0, 24);tsmiToolStrip.Checked = false;tlsNotepad.Visible = false;// 设置多格式文本框左上角位置rtxtNotepad.Location = point;// 隐藏工具栏后,增加文本框高度rtxtNotepad.Height += tlsNotepad.Height;}else{/* 显示工具栏时,多格式文本框左上角位置的位置为(0,49),因为工具栏的高度为25,加上菜单的高度24后为49 */point = new Point(0, 49);tsmiToolStrip.Checked = true;tlsNotepad.Visible = true;rtxtNotepad.Location = point;rtxtNotepad.Height -= tlsNotepad.Height;}}// 工具栏的ItemClicked事件代码//*************************************************************************private void tlsNotepad_ItemClicked(object sender, ToolStripItemClickedEventArgs e){int n;// 变量n用来接收按下按钮的索引号从0开始n = tlsNotepad.Items.IndexOf(e.ClickedItem);switch (n){case 0:新建NToolStripMenuItem_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;}}// 工具栏的ItemClicked事件代码

状态栏:

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();}

计时器代码:

// 计时器控件的Tick事件代码//*************************************************************************private void tmrNotepad_Tick(object sender, EventArgs e){tssLbl2.Text = System.DateTime.Now.ToString();}

四、结果展示
用户界面:

输入界面:

用C#代码实现记事本相关推荐

  1. b站黑马的Vue快速入门案例代码——小黑记事本

    目录 目标效果: 重点原理: (1)push()方法--向数组末尾,添加新元素,并返回新长度 (2)v-on可以传递自定义参数,v-on:click="..."的简写是@click ...

  2. 易语言复制代码到记事本时出现乱码

    参考:http://blog.sina.com.cn/s/blog_63fcd99c0102v2ga.html 我把易语言IDE里面的代码复制到计算本时,出现了乱码: Á¬½Ó¾ä±ú £½ Ä£¿é ...

  3. java记事本写玫瑰花代码_Java记事本源代码(完整)

    <Java记事本源代码(完整)>由会员分享,可在线阅读,更多相关<Java记事本源代码(完整)(13页珍藏版)>请在人人文库网上搜索. 1.* 作品:记事本* 作者:* 功能: ...

  4. bat最简单的装逼代码(记事本)

    1,右击桌面,点新建,文本文档 2,打开后输入tree d:即可或者是tree c: 3,文件后缀名修改为bat 4,双击打开 感兴趣的小伙伴们赶紧尝试一下吧!

  5. HTML+css+js相关代码(记事本)

    注释: css  /**/ html   <!--> ctrl+f :查找 html meta: 空标签,表示网页的关键词,跳转网页 style:添加自定义风格,css样式表 link : ...

  6. java 无开发环境时在记事本中编写的方法与命令行运行java代码

    第一步:记事本编写java代码 用记事本编写的是java的源代码文件,里面的代码就是我们平时学习的java代码,生成的文 件后缀是.txt,更改文本文档的后缀名为 .java.java文件是不能直接执 ...

  7. 三行代码让你的博客访问量上百万

    复制下面代码到记事本里,将地址替换为要刷访问量的博客地址,然后将文件后缀名改为.html,使用浏览器打开即可 1 <!-- 用iframe主要是为了避免使用window.open()方法,一直弹 ...

  8. 找不到显示桌面的快捷方式怎么办|显示桌面的快捷方式找不到解决方法|显示桌面代码|...

    找不到显示桌面的快捷方式怎么办|显示桌面的快捷方式找不到解决方法|显示桌面代码| 新建记事本把一下代码拷进去,保存成scf格式,然后拖到状态栏图标就可以了 [Shell] Command=2 Icon ...

  9. ie运行不了java脚本界面_IE浏览器不能运行js JS代码失效不能运行了如何解决

    IE浏览器不能运行js JS代码失效不能运行了如何解决 发布时间:2012-02-20 16:39:23   作者:佚名   我要评论 IE不能运行js,在IE浏览器js代码失效,js不能运行了怎么办 ...

最新文章

  1. 面试题:请用代码实现ip地址与int之间互换?
  2. 使用repeater,遍历数据,不规则排序,不同的样式之间切换
  3. 7.6~7.20集训总结(一)
  4. python下的scripts有什么用_python安装后无scripts内文件,无法使用pip
  5. 栈和递归的关系 144:Binary Tree Preorder Traversal
  6. Java字节流的使用
  7. 在Linux中快速找到文件的几种方法
  8. 参数等效模型可以用于_扬声器单元的等效电路分析与应用(1)
  9. google手机连接wifi后提示“无法连接互联网“的原因和解决方法
  10. Spring是如何解决循坏依赖的?
  11. 裸金属服务器(Bare Metal Server,BMS)
  12. LintCode 488.快乐数
  13. java面试题(记录与分享)二
  14. [VulnHub靶机]Lampiao_脏牛提权
  15. 五分频器(Verilog)
  16. ios 热更新 无需上传AppStore 可以直接新加功能
  17. 数字孪生城市可视化大屏设计,智慧楼宇开源项目
  18. 虚拟机可以识别U盘,但是连接不上U盘的问题
  19. win10如何使用miphone刷机工具
  20. Android刷windows 10系统,安卓手机刷win10电脑版

热门文章

  1. 手机PCB设计基本要求
  2. 使用 EasyExcel 读取和下载 excel 文件
  3. 树莓派4B上多版本python切换(一)
  4. MNIST数据集转为.jpg图片格式
  5. 百度离线地图WMS/WMTS服务
  6. PPT:智慧物流园区建设方案
  7. 医疗器械唯一标识UDI问题解答-医疗器械进销存软件管理系统
  8. 在线支付系列【24】支付宝开放平台产品介绍
  9. 阿里妈妈展示广告粗排:面向链路一致性优化的端到端序学习模型
  10. SVN和Git的 区别