学习目标:
用c#语言实现记事本(代码)
学习内容:
完成群课件里面的实现记事本的开发应用
实验代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Notepad
{

public partial class frmNotepad : Form
{/* 布尔变量b用于判断文件是新建的还是从磁盘打开的,

true表示文件是从磁盘打开的,false表示文件是新建的,默认值为false*/
bool b = false;
/* 布尔变量s用于判断文件件是否被保存,
true表示文件是已经被保存了,false表示文件未被保存,默认值为true*/
bool s = true;
public frmNotepad()
{
InitializeComponent();
}

    private void rtxtNotepad_TextChanged(object sender, EventArgs e){// 文本被修改后,设置s为false,表示文件未保存s = false;}private void tsmiFilem_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){//由于这个没有改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 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){// 隐藏工具栏时,把坐标设为(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;}}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用来接收按下按钮的索引号从0开始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 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;}}private void tmrNotepad_Tick(object sender, EventArgs e){tssLbl2.Text = System.DateTime.Now.ToString();}private void frmNotepad_SizeChanged(object sender, EventArgs e){frmNotepad ob_frmNotepad = new frmNotepad();tssLbl1.Width = this.Width / 2 - 12;tssLbl2.Width = tssLbl1.Width;}
}

}
实验截图:


实验心得:在这次使用c#编写出记事本的实验中,运用到了许多知识,有许多步骤。例如:界面设计,多种控件的运用,以及一些对话框的设计等等。编程的代码也是具有板块化的完成思维,每一步都有需要怎么样的代码编写以及起到作用。这次实验也使得计算机的代码可视化,更加直观的作用在,呈现在我们的面前。

windows记事本 3相关推荐

  1. Linux和windows中的换行符差异问题 LINUX的换行符在Windows记事本打开不换行或出现黑点

    http://hi.baidu.com/mayongl7/blog/item/06e61af7c719053a730eec4d.html LINUX的换行符在Windows记事本打开不换行或出现黑点 ...

  2. 【转】刨根究底字符编码之十六——Windows记事本的诡异怪事:微软为什么跟联通有仇?

    1. 当用一个软件(比如Windows记事本或Notepad++)打开一个文本文件时,它要做的第一件事是确定这个文本文件究竟是使用哪种编码方式保存的,以便于该软件对其正确解码,否则将显示为乱码. 一般 ...

  3. Windows 记事本的 Bug :-)

    看了标题是不是很惊讶?简单的 windows 记事本也有 bug??呵呵,无意中发现,分享下,仅供休闲娱乐. 问题出在"自动换行"功能上.请先把"格式"-&qu ...

  4. windows记事本自动换行

    新建txt文本文件,将下面注册表编辑文档复制进去,并重命名为.reg文件,运行后就可以实现windows记事本自动换行 REGEDIT4 [HKEY_CURRENT_USER\Software\Mic ...

  5. 在Windows 记事本中快速选中大量文本的方法

    以下以Notepad3为例,在Windows 记事本和几乎所有的文本编辑软件中有相同的操作方法. 1. 基本操作: 全选,快捷键为Ctrl + A. 跳转到指定行或列,快捷键为Ctrl + G. 间断 ...

  6. java 仿照windows的记事本_Java仿Windows记事本源代码分享

    本文实例为大家分享了Java仿Windows记事本的具体代码,供大家参考,具体内容如下 先上截图: 源代码: import java.awt.*; import javax.swing.*; impo ...

  7. Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?(好)

    修改 Windows 记事本的 ANSI.Unicode.UTF-8 这三种编码模式有什么区别?修改 Windows 的记事本默认存储文本文档编码是 ANSI,想问一下为了最大跨平台兼容性,应该采用哪 ...

  8. Python处理Windows记事本utf8编码文件要注意的坑

    封面图片:<Python程序设计基础(第2版)>,ISBN:9787302490562,董付国,清华大学出版社 图书详情: 配套资源:用书教师可以免费获取教学大纲.教案.课件.源码.习题答 ...

  9. 用windows“记事本”创建一个文本文件(hamlet.txt),其中每行包含一段英文。试读出文件的全部内容,并判断:(1)该文本文件有多少行?(2)文件中以大写字母开头的有多少行?

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 题目: 代码: 效果截图: 总结 题目: 用windows"记事本"创建一个文本文件(hamlet.txt) ...

  10. 仿Windows记事本简要分析 (Java)

    仿Windows记事本简要分析 (Java) 学Java的同学大部分都会做过一个小练习 ,用Java 做出一个记事本 .其中主要涉及的是界面和 io流 方面的知识 . 学完之后我在这做一个小总结,以下 ...

最新文章

  1. 大数据目标检测推理管道部署
  2. 安装最新Spree出现error:spree_core requires will_paginate (= 3.0.pre2, runtime)
  3. Docker Review - Docker 概念 入门篇
  4. 岗位推荐 | 百度视觉技术部招聘移动端视觉算法工程师
  5. QuickWAP 2.x注册方法和购买注意事项
  6. 51多项式06——复系数和实系数多项式
  7. 35. PHP 字符串
  8. android命令行wifi开关,Android系统SVC命令(命令行WIFI开关、GPRS移动数据开关)
  9. 使用Office 365抓取PM2.5数据
  10. 电脑常见问题:能打开QQ但不能打开网页(DNS问题)
  11. 2004年1月六级听力原文的启示:每顿饭后刷牙牙齿好
  12. 谁是史上最强-用爬虫分析IMDB TOP250电影数据
  13. BrowserslistError: Unknown version 67 of android
  14. Elasticsearch _reindex Alias使用
  15. PDF文档免费转成Word文档,不限页数。
  16. SpringCloud2020学习笔记13——SpringCloud Stream消息驱动
  17. 不用全局plugin,项目在哭泣
  18. 计算机专业助我成长作文700,你让我成长作文700字
  19. 软件项目管理系统-经费报销-出差费
  20. 【安卓-tio】安卓集成t-io

热门文章

  1. 正规矩阵 酉矩阵 对角矩阵
  2. View的复用:viewHolder
  3. viewHolder的作用
  4. 上海大华条码称代码_上海大华条码秤使用说明书样本
  5. JavaSE实现汽车租赁系统
  6. 如何用html放音乐播放器,如何用html+js实现音乐歌词同步播放器
  7. Lavas 安装和项目构建
  8. vbs字符串正则_VBS教程:正则表达式简介 -字符匹配
  9. MATLAB绘图 最大化全屏后保存
  10. window10 tar解压