C#编写一个简单记事本功能

本文实例为大家分享了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();
   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();
  }

 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C# 获取硬件参数的实现方法

    C# 获取硬件参数的实现方法 示例代码: private static string GetIdentifier(string wmiClass, string wmiProperty, string wmiMustBeTrue) { string result = ""; System.Management.ManagementClass mc = new System.Management.ManagementClass(wmiClass); System.Management.M

  • 详解C#使用AD(Active Directory)验证内网用户名密码

    详解C#使用AD(Active Directory)验证内网用户名密码 1. 连到内网,找到AD的domain地址 nslookup set types=all _ldap._tcp 2. 验证AD的函数 public bool ADLogin(string userName, string password) { // sample : // LDAP://xxx.com string domain = System.Configuration.ConfigurationManager.App

  • C#微信分享代码

    本文实例为大家分享了C#微信分享的具体代码,供大家参考,具体内容如下 微信分享代码,先引入: <script type="text/javascript" charset="utf-8" src="http://res.wx.qq.com/open/js/jweixin-1.1.0.js"></script> 获取签名: mui.ajax('/apijson/wxsign', { type: 'get', data: {

  • C# 判断时间段是否相交的实现方法

    C# 判断时间段是否相交的实现方法 1. 判断两个起止时间是否相交: public static bool IsTimeBetween(TimeSpan input, TimeSpan start, TimeSpan end, bool fromInclusice, bool toInclusive) { //http://stackoverflow.com/questions/592248/how-can-i-check-if-the-current-time-is-between-in-a-

  • 微信小程序支付之c#后台实现方法

    微信小程序支付c#后台实现 今天为大家带来比较简单的支付后台处理 首先下载官方的c#模板(WxPayAPI),将模板(WxPayAPI)添加到服务器上,然后在WxPayAPI项目目录中添加两个"一般处理程序" (改名为GetOpenid.ashx.pay.ashx) 之后打开business目录下的JsApiPay.cs,在JsApiPay.cs中修改如下两处 然后在GetOpenid.ashx中加入代码如下: public class GetOpenid : IHttpHandler

  • C#集合类用法实例代码详解

    下面介绍C#的集合类 1ArrayList using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; namespace 动态数组ArrayList { class Program { static void Main(string[] args) { ArrayList

  • C#编写一个简单记事本功能

    本文实例为大家分享了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;

  • 通过Python编写一个简单登录功能过程解析

    需求: 写一个登录的程序, 1.最多登陆失败3次 2.登录成功,提示欢迎xx登录,今天的日期是xxx,程序结束 3.要检验输入是否为空,账号和密码不能为空 4.账号不区分大小写 import datetime count = 0 while count < 3: username = input("username: ") pwd = input("password: ") date = datetime.date.today() if username.st

  • 使用原生js编写一个简单的框选功能方法

    今天我们来聊一下怎么使用原生javascript编写一个简单的框选功能. 需求描述 鼠标左键按下不放,移动鼠标出现矩形选框: 鼠标左键松开,根据上边出现的矩形选框统计选框范围内的DOM元素: 嗯...上边的功能描述看着是挺简单的,但实现起来也还是会有些地方需要斟酌思考的.比如,如果我们的框选范围不是document.body,而是某一个div里边进行框选呢?而现实开发过程中,我们会遇上的应该就是第二种情况. 点击查看完整的源码 怎么实现 二话不说,咱们动手写代码吧!因为更好的兼容性,这里就避免了

  • 使用C++ MFC编写一个简单的五子棋游戏程序

    MFC简介: MFC(MicrosoftFoundationClasses)是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装了大部分的windows API函数. MFC除了是一个类库以外,还是一个框架,在vc++里新建一个MFC的工程,开发环境会自动帮你产生许多文件,同时它使用了mfcxx.dll.xx是版本,它封装了mfc内核,所以你在你的代码看不到原本的SDK编程中的消息循环等等东西,因为MFC框架帮你封装好了,这样你就可以专心的考虑你程序的逻辑,而不是这些每次编程都要重复的

  • 基于Python编写一个简单的端口扫描器

    目录 1.需要的库 2.获取一个 host 地址 3.循环所有的端口 4.完整脚本 端口扫描是非常实用的,不止用在信息安全方面,日常的运维也用得到.这方面的工具也不要太多,搞过 CTF 的朋友会告诉你有多少端口扫描工具,那为什么还要用 Python 再自己实现一遍?这个问题就像饭店里的菜已经很好吃了,为什么还要自己烧菜一样,主要还是为了适合自己的口味,添加自己需要的个性功能. 今天我们将用 20 行代码编写一个简单的端口扫描器.让我们开始吧! 1.需要的库 都是标准库,因此内网环境也不影响: i

  • 基于C语言编写一个简单的抽卡小游戏

    目录 效果图展示 开始的界面 输入1 输入10 输入0 实现代码 test4.26.c 许愿.c game.h 下载 小奔最近学了C语言不少的东西,但是想用学到的东西来搞一个小游戏. 不过小奔就不做那些猜数字等小游戏了,虽然很经典,但是可以尝试一下其他比较好玩的. 小奔喜欢玩原神,但它抽卡系统的中奖概率太低了,所以就类似做一个它的抽卡系统吧,不过没有保底功能哦(小奔还不想搞,还要学习新的知识,不过以后熟练了就可能会搞一个),是全角色抽卡,只有角色没有武器的,可以十连抽,没有保底功能,抽中的概率只

  • 利用 Go 语言编写一个简单的 WebSocket 推送服务

    本文中代码可以在 github.com/alfred-zhong/wserver获取. 背景 最近拿到需求要在网页上展示报警信息.以往报警信息都是通过短信,微信和 App 推送给用户的,现在要让登录用户在网页端也能实时接收到报警推送. 依稀记得以前工作的时候遇到过类似的需求.因为以前的浏览器标准比较陈旧,并且那时用 Java 较多,所以那时候解决这个问题就用了 Comet4J.具体的原理就是长轮询,长链接.但现在毕竟 html5 流行开来了,IE 都被 Edge 接替了,再用以前这种技术就显得过

  • Python使用字典实现的简单记事本功能示例

    本文实例讲述了Python使用字典实现的简单记事本功能.分享给大家供大家参考,具体如下: from time import sleep, strftime user = "Cytus" calendar = {} def welcome(): print "Welcome to use this calendar. %s" % user print "Calendar is opening." sleep(1) print strftime(&q

  • python+flask编写一个简单的登录接口

    在学习接口测试的时候往往会因为没有实际操作的接口进行测试而烦恼,这里教大家自己编写两个接口用于学习接口测试 1.编写一个登录的接口 2.在pycharm运行 3.使用apipost进行登录接口测试 输入url和参数值进行访问,访问成功. 4.在pycharm查看是否正常进行访问 5.在编写一个需要登录返回的token直接访问的查询接口 6.运行登录和查询两个接口 7.使用apipost进行登录和查询的接口测试 首先进行登录的接口测试获取返回的token 使用登录返回的token值进行查询的接口测

  • C# 利用VS编写一个简单的网游客户端

    目录 一.测试连接服务器 二.设计客户端 三.运行效果 四.总结 一.测试连接服务器 1.打开cmd,输入ping 10.1.230.74 2.输入telnet,进入telnet界面 3.输入set localecho,打开本地回显: 4.连接服务器,输入命令open 10.1.230.74 3900 二.设计客户端 1.新建项目 打开VS2022选择新建Windows窗体应用 如果没找到,说明没有安装相应的配置,可以添加工具 选择 安装成功就能找到了. 2.设计界面 新建完成后,会直接来到Fo

随机推荐