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

 更新时间:2017年10月25日 08:36:49   作者:卖画的作家  
这篇文章主要为大家详细介绍了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();
  }

  

 }
}

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

相关文章

  • C#实现字符串倒序的写法

    C#实现字符串倒序的写法

    这篇文章主要为大家详细介绍了C#实现字符串倒序的多种写法,以LINQ写法最为简洁,感兴趣的朋友可以参考一下
    2016-05-05
  • 详解C#中IAsyncDisposable接口的使用

    详解C#中IAsyncDisposable接口的使用

    在.NET Core 3.0的版本更新中,官方我们带来了一个新的接口 IAsyncDisposable,下面小编就来和大家聊聊它的简单使用吧,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-07-07
  • jQuery结合C#实现上传文件的方法

    jQuery结合C#实现上传文件的方法

    这篇文章主要介绍了jQuery结合C#实现上传文件的方法,涉及C#文件上传的相关技巧,需要的朋友可以参考下
    2015-04-04
  • Unity Shader实现2D水流效果

    Unity Shader实现2D水流效果

    这篇文章主要为大家详细介绍了Unity Shader实现2D水流效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • C#视频转换类分享

    C#视频转换类分享

    这篇文章主要为大家分享了C#视频转换类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 探讨Object转为String的几种简易形式详解

    探讨Object转为String的几种简易形式详解

    本篇文章是对Object转为String的几种简易形式进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • C#程序加密工具.Net Reactor详细教程

    C#程序加密工具.Net Reactor详细教程

    .Net Reacto加密工具是一款强大的 .NET 代码保护和授权管理系统,安全可靠、简单易用,主要用来帮助开发人员保护他们的 .NET 软件产品,本文给大家详细介绍C#程序加密工具.Net Reactor教程,感兴趣的朋友一起看看吧
    2022-02-02
  • Unity UGUI的GridLayoutGroup网格布局组件使用详解

    Unity UGUI的GridLayoutGroup网格布局组件使用详解

    这篇文章主要介绍了Unity UGUI的GridLayoutGroup网格布局组件使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • C#访问C++动态分配的数组指针(实例讲解)

    C#访问C++动态分配的数组指针(实例讲解)

    下面小编就为大家分享一篇C#访问C++动态分配的数组指针(实例讲解),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • 详谈C# 图片与byte[]之间以及byte[]与string之间的转换

    详谈C# 图片与byte[]之间以及byte[]与string之间的转换

    下面小编就为大家带来一篇详谈C# 图片与byte[]之间以及byte[]与string之间的转换。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02

最新评论