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();
richTextBox1.Text = "";
} //*************************************************************************
// 多格式文本框的TextChanged事件代码
//*************************************************************************
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
//文本框被修改后,设置s为false,表示文件未保存
s = false;
} //*************************************************************************
// 【文件】菜单各菜单项的单击代码
//*************************************************************************
//*************************************************************************
// 【新建】菜单代码
//*************************************************************************
private void 新建NToolStripMenuItem_Click(object sender, EventArgs e)
{
//判断当前文件是否是从磁盘打开,或者新建时文档不为空,并且文件未被保存
if(b == true || richTextBox1.Text.Trim() != "")
{
//若文件未保存
if(s == false)
{
string result;
result = MessageBox.Show("文件尚未保存,是否保存?", "保存文件", MessageBoxButtons.YesNoCancel).ToString();
switch(result)
{
case"Yes":
//若文件是从磁盘打开的
if(b == true)
{
//按文件打开的路径保存文件
richTextBox1.SaveFile(sdlgNotepad.FileName);
}else if(sdlgNotepad.ShowDialog()==DialogResult.OK)
{
richTextBox1.SaveFile(sdlgNotepad.FileName);
}
s = true;
richTextBox1.Text = "";
break;
case"No":
b = false;
richTextBox1.Text = "";
break;
}
}
}
} //*************************************************************************
// 【保存】菜单代码
//*************************************************************************
private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)
{
//若文件从磁盘打开并且修改了其中内容
if(b == true && richTextBox1.Modified == true)
{
richTextBox1.SaveFile(odlgNotepad.FileName);
s = true;
}
else if(b == false && richTextBox1.Text.Trim() != "" &&sdlgNotepad.ShowDialog() == DialogResult.OK)
{
//保存文件
richTextBox1.SaveFile(sdlgNotepad.FileName);
s = true;
b = true;
odlgNotepad.FileName = sdlgNotepad.FileName;
}
} //*************************************************************************
// 【打开】菜单代码
//*************************************************************************
private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)
{
//判断当前文件是否是从磁盘打开,或者新建时文档不为空,并且文件未被保存
try
{
if (b == true || richTextBox1.Text.Trim() != "")
{
if (s == false)
{
string result;
result = MessageBox.Show("文件尚未保存,是否保存?", "保存文件", MessageBoxButtons.YesNoCancel).ToString();
switch (result)
{
case "Yes":
//若文件是从磁盘打开的
if (b == true)
{
//按文件打开的路径保存文件
richTextBox1.SaveFile(sdlgNotepad.FileName);
}
else if (sdlgNotepad.ShowDialog() == DialogResult.OK)
{
richTextBox1.SaveFile(sdlgNotepad.FileName);
}
s = true;
richTextBox1.Text = "";
break;
case "No":
b = false;
richTextBox1.Text = "";
break;
}
}
}
odlgNotepad.RestoreDirectory = true;
if ((odlgNotepad.ShowDialog() == DialogResult.OK) && odlgNotepad.FileName != "")
{
//打开文件
richTextBox1.LoadFile(odlgNotepad.FileName);
b = true;
}
s = true;
}
catch(Exception ex)
{ } } //*************************************************************************
// 【另存为】菜单代码
//*************************************************************************
private void 另存为AToolStripMenuItem_Click(object sender, EventArgs e)
{
if(sdlgNotepad.ShowDialog() == DialogResult.OK)
{
richTextBox1.SaveFile(sdlgNotepad.FileName);
s = true;
}
} //*************************************************************************
// 【退出】菜单代码
//*************************************************************************
private void 退出XToolStripMenuItem_Click(object sender, EventArgs e)
{
//结束程序运行
Application.Exit();
} //*************************************************************************
// 【编辑】菜单各菜单项的单击代码
//*************************************************************************
// 【撤销】菜单代码
private void 撤消UToolStripMenuItem_Click(object sender, EventArgs e)
{
//撤销操作
richTextBox1.Undo();
} // 【复制】菜单代码
private void 复制CToolStripMenuItem_Click(object sender, EventArgs e)
{
//复制
richTextBox1.Copy();
} // 【剪切】菜单代码
private void 剪切TToolStripMenuItem_Click(object sender, EventArgs e)
{
//剪切
richTextBox1.Cut();
} // 【粘贴】菜单代码
private void 粘贴PToolStripMenuItem_Click(object sender, EventArgs e)
{
//粘贴
richTextBox1.Paste();
} // 【全选】菜单代码
private void 全选AToolStripMenuItem_Click(object sender, EventArgs e)
{
//全选
richTextBox1.SelectAll();
} //*************************************************************************
// 【格式】菜单代码
//*************************************************************************
private void 工具TToolStripMenuItem_Click(object sender, EventArgs e)
{ } // 【自动换行】菜单代码
private void 自定义CToolStripMenuItem_Click(object sender, EventArgs e)
{
if(自定义CToolStripMenuItem.Checked == false)
{
//选中自动换行
自定义CToolStripMenuItem.Checked = true;
//设置为自动换行
richTextBox1.WordWrap = true;
}
else
{
//未选中自动换行
自定义CToolStripMenuItem.Checked = false;
//设置为不自动换行
richTextBox1.WordWrap = false;
}
} // 【字体】菜单代码
private void 选项OToolStripMenuItem_Click(object sender, EventArgs e)
{
fdlgNotepad.ShowColor = true;
if(fdlgNotepad.ShowDialog() == DialogResult.OK)
{
richTextBox1.SelectionColor = fdlgNotepad.Color;
richTextBox1.SelectionFont = fdlgNotepad.Font;
}
} //*************************************************************************
// 【帮助】菜单代码
//*************************************************************************
// 【关于】菜单代码
private void 关于AToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("wky 编写", "关于\"记事本\"", MessageBoxButtons.OK);
} //*************************************************************************
// 计时器控件的Tick事件代码
//*************************************************************************
private void tmrNotepad_Tick(object sender, EventArgs e)
{
//获取系统当前时间,并显示在状态栏中
tssLbl2.Text = System.DateTime.Now.ToString();
} private void 粘贴PToolStripButton_Click(object sender, EventArgs e)
{
richTextBox1.Paste();
} }
}

c#实现记事本的更多相关文章

  1. Notepad2替代系统自带的记事本

    事情是这样的,平时我经常把一些文字复制到记事本中编辑好了再复制到目标位置,可以在系统自带的记事本中替换删除一些内容,记事本小巧,占用很少的资源,我很喜欢:但今天复制的内容中有很多数字和一些我不想要的内 ...

  2. JAVA/GUI程序之记事本

    自上半年JAVA课程结束后,再也没有看过JAVA了,最近不是很忙,又简单的看了看,本博客纯属记录学习过程,请大神们别笑,其中错误是难免的,毕竟是新手写的博客.下面就进入我们的正题吧,复习GUI时,就想 ...

  3. HTML---用记事本写html

    <DOCTYPE HTML> <--DOCTYPE 文档类型,浏览器按照该类型解析--> <html> <head> <title>这个是h ...

  4. C++-Qt【2】-实现一个简单的记事本

    用Qt实现一个简单的记事本: #include "helloqt.h" #include <qfiledialog.h> #include <qfile.h> ...

  5. windows自带记事本导致文本文件(UTF-8编码)开头三个字符乱码问题

    在windows平台下,使用系统的记事本以UTF-8编码格式存储了一个文本文件,但是由于Microsoft开发记事本的团队使用了一个非常怪异的行为来保存UTF-8编码的文件,它们自作聪明地在每个文件开 ...

  6. winform记事本(基本功能)

    本题主要考察各种控件的应用 using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...

  7. 大熊君大话NodeJS之------基于Connect中间件的小应用(Bigbear记事本应用之第一篇)

    一,开篇分析 大家好哦,大熊君又来了,昨天因为有点个人的事没有写博客,今天又出来了一篇,这篇主要是写一个记事本的小应用,前面的文章, 我也介绍过“Connect”中间件的使用以及“Mongodb”的用 ...

  8. 签名、BOM头、编码、Windows记事本编码、java编码解码的那些事

    对于Windows记事本: ANSI :GB2312 java中应使用GBK解码 Unicode :有签名的UTF-16LE java中应使用UTF-16解码 Unicode big endian : ...

  9. 转!!windows记事本保存“联通” 编码问题

    原博文网址:http://blog.csdn.net/Zhiyuan_Ma/article/details/51838054 简单分析: 这是微软记事本的一个BUG,准确点就是unicode编码的问题 ...

  10. win32记事本程序(二)

    遇到一个较大的难题,做记事本要不要使用edit或者是richedit控件呢.如果用控件的话感觉没什么挑战,不用控件,现有的参考资料仅有<windows程序设计>第六章的TYPER程序,这个 ...

随机推荐

  1. 阿里云Ubuntu快速建站

    阿里云Ubuntu快速建站 有一个小笑话: 从前有个程序员遇到了一个问题.他想,没事,我懂,用线程就好了.现他有两个问题了. 本人小白,对网站部署什么都不懂,只是申请个阿里云服务器,把我的站点放上去. ...

  2. Appium+python自动化7-输入中文【转载】

    前言 在做app自动化过程中会踩很多坑,咱们都是用的中文的app,所以首先要解决中文输入的问题! 本篇通过屏蔽软键盘,绕过手机的软键盘方法,解决中文输入问题. 一.定位搜索 1.打开淘宝点搜索按钮,进 ...

  3. array数据初始化

    #include <iostream> int main() { ]={}; std::cout<<array[]<<]; } 试了试上面的代码发现,数组在用{}赋 ...

  4. Centos查看文件夹大小

    查看当前目录下文件夹大小 du -h --max-depth=1 查看整体情况 df -h

  5. Laravel使用Eloquent ORM操作数据库

    1.定义模型 <?php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model{ p ...

  6. CodeForces 450B Jzzhu and Sequences 【矩阵快速幂】

    Jzzhu has invented a kind of sequences, they meet the following property: You are given x and y, ple ...

  7. [CF526G]Spiders Evil Plan

    题目大意: 给出一个$n(n\leq 10^5)$个结点的带边权的树,$q(q\leq 10^5)$个询问,每次询问用$y$条路径覆盖整棵树且覆盖$x$至少一次,最多能覆盖的道路长度是多少? 强制在线 ...

  8. [COCI2015]FUNGHI

    题目大意: 一个环上有8个数,从中选取连续的4个数使得和最大,求最大的和. 思路: 模拟. #include<cstdio> #include<cctype> #include ...

  9. 解决413 Request Entity Too Large

    修改nginx配置    这是最简单的一个做法,着报错原因是nginx不允许上传配置过大的文件,那么件把nginx的上传大小配置调高就好. 1.打开nginx主配置文件nginx.conf,一般在/u ...

  10. Linux学习之三-Linux系统的一些重要配置文件

    Linux学习之三-Linux系统的一些重要配置文件 1.网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 说明: DEVICE=eth0        ...