利用C#实现记事本的功能的示例代码

 更新时间:2023年12月08日 08:51:24   作者:十七个远方在远方  
这篇文章主要为大家详细介绍了如何利用C#实现简单的记事本的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

知识点:

openFileDialog1 是一个 Windows 窗体应用程序中的控件,用于实现文件选择对话框的功能。它是 System.Windows.Forms.OpenFileDialog 类的一个实例。

OpenFileDialog 控件允许用户浏览文件系统并选择要打开的文件。它提供了一些属性和方法,用于设置和控制文件选择对话框的外观和行为。

在代码中,openFileDialog1 是一个在窗体设计器中创建的 OpenFileDialog 控件的实例。通过对该控件的属性进行设置,可以定义打开文件对话框的初始目录、可显示的文件类型等。

他有以下的属性和方法:

属性:

  • InitialDirectory:获取或设置打开文件对话框的初始目录。
  • Filter:获取或设置打开文件对话框可以显示的文件类型。
  • FileName:获取或设置用户选择的要打开的文件的全路径。
  • Multiselect:获取或设置一个值,指示是否允许选择多个文件。
  • Title:获取或设置打开文件对话框的标题。
  • CheckFileExists:获取或设置一个值,指示是否检查用户输入的文件是否存在。
  • CheckPathExists:获取或设置一个值,指示是否检查用户输入的路径是否存在。

方法:

ShowDialog:显示打开文件对话框,并等待用户选择文件。返回一个 DialogResult 值,表示用户的操作结果。

OpenFile:打开用户选择的文件,并返回一个 Stream 对象,用于读取文件的内容。

int index = filename.LastIndexOf(@"\");

LastIndexOf 方法用于查找指定字符或字符串在字符串中最后一次出现的位置。

@"\" 表示反斜杠字符 \,在 C# 中需要使用 @ 符号来表示字符串中的转义字符。

filename.LastIndexOf(@"\") 返回最后一个反斜杠字符 \ 在 filename 字符串中的位置。

index 变量用于存储最后一个反斜杠字符的位置。

filename = filename.Substring(index + 1);

Substring 方法用于从字符串中提取子字符串。

index + 1 表示从 index 位置的下一个字符开始提取子字符串。

filename.Substring(index + 1) 返回从 index + 1 位置开始到字符串末尾的子字符串。

filename 变量被赋值为提取的文件名(不包括路径)。

this.Text = filename + "我的记事本";

this.Text 表示当前窗口的标题栏文本。

filename + "我的记事本" 将提取的文件名与字符串 "我的记事本" 进行拼接。

this.Text = filename + "我的记事本" 将拼接后的字符串设置为窗口的标题。

SaveFileDialog 类是用于显示保存文件对话框的 Windows 窗体控件。它提供了一些属性和方法,用于配置和操作保存文件对话框的行为和结果。

以下是 SaveFileDialog 类的一些常用属性和方法:

属性:

FileName:获取或设置保存文件对话框中的默认文件名。

Filter:获取或设置保存文件对话框中可以显示的文件类型。

InitialDirectory:获取或设置保存文件对话框的初始目录。

Title:获取或设置保存文件对话框的标题。

OverwritePrompt:获取或设置一个值,指示是否在用户选择的文件已存在时显示覆盖提示。

CreatePrompt:获取或设置一个值,指示是否在用户输入的文件名不存在时显示创建提示。

DefaultExt:获取或设置默认的文件扩展名。

方法:

ShowDialog():显示保存文件对话框,并返回一个 DialogResult 值,表示用户的操作结果。

Dispose():释放 SaveFileDialog 对象使用的资源。

实现代码

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 NoteBook45
{
    public partial class Form1 : Form
    {
        bool isFirstSave = true;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)//暴力新建
        {
            rtxtEdit.Clear();
            this.Text = "无标题-我的记事本";
        }
 
        private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            this.Text = "无标题-我的记事本";
            rtxtEdit.WordWrap = false;
            自动换行ToolStripMenuItem.CheckOnClick = true;
        }
 
        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)//暴力退出
        {
            Application.Exit();
        }
 
        private void 撤销ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            rtxtEdit.Undo();
        }
 
        private void 复制ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (rtxtEdit.SelectedText != "")
                rtxtEdit.Copy();
            else
                MessageBox.Show("没有选中任何内容,无法进行复制!");
        }
 
        private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            rtxtEdit.Paste();
        }
 
        private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (rtxtEdit.SelectedText != "")
                rtxtEdit.Cut();
            else
                MessageBox.Show("没有选择任何内容,无法进行剪切!");
        }
 
        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
        {
 
        }
 
        private void 复制ToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            复制ToolStripMenuItem_Click(sender, e);
        }
 
        private void 粘贴ToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            粘贴ToolStripMenuItem_Click(sender, e);
        }
 
        private void 剪切ToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            剪切ToolStripMenuItem_Click(sender, e);
        }
 
        private void toolStripButton新建_Click(object sender, EventArgs e)
        {
            新建ToolStripMenuItem_Click(sender, e);
        }
 
        private void toolStripButton打开_Click(object sender, EventArgs e)
        {
 
        }
 
        private void toolStripButton保存_Click(object sender, EventArgs e)
        {
 
        }
 
        private void toolStripButton复制_Click(object sender, EventArgs e)
        {
            复制ToolStripMenuItem_Click(sender, e);
        }
 
        private void toolStripButton粘贴_Click(object sender, EventArgs e)
        {
            粘贴ToolStripMenuItem_Click(sender, e);
        }
 
        private void toolStripButton剪切_Click(object sender, EventArgs e)
        {
            剪切ToolStripMenuItem_Click(sender, e);
        }
 
        private void toolStripButton撤销_Click(object sender, EventArgs e)
        {
            撤销ToolStripMenuItem_Click(sender, e);
        }
 
        private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)//暴力打开
        {
            openFileDialog1.InitialDirectory=@"C:\";//设置打开文件对话框的初始目录
            openFileDialog1.Filter = "文本文件(*.txt)|*.TXT";//设置打开文件对话框可以显示的文件类型
            openFileDialog1.FileName = "";
            openFileDialog1.ShowDialog();//显示打开文件对话框
            string filename = openFileDialog1.FileName;//获取用户选择的要打开的文件的全路径
            if (filename == "")
                MessageBox.Show("没有选中要打开的文件!");
            else
            {
                rtxtEdit.LoadFile(filename, RichTextBoxStreamType.PlainText);//以纯文本的形式,将文件内容加载进富文本框
                //c:\my documents\1.txt
                int index = filename.LastIndexOf(@"\");//求最后一个反斜杠在文件名中的位置
                filename = filename.Substring(index + 1);//求文件名的主文件名和扩展名
                this.Text = filename + "我的记事本";
            }
 
        }
 
        private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (isFirstSave)
 {
     另存为ToolStripMenuItem_Click(sender, e);
         isFirstSave = false;
     }
 else
     rtxtEdit.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);
        }
 
        private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            saveFileDialog1.InitialDirectory = @"c:\";
            saveFileDialog1.Filter = "文本文件(*.txt)|*.TXT";
            saveFileDialog1.FileName = "";
            string filename = "";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                filename = saveFileDialog1.FileName;
                rtxtEdit.SaveFile(filename, RichTextBoxStreamType.PlainText);
                int index = filename.LastIndexOf(@"\");//求最后一个反斜杠在文件名中的位置
                filename = filename.Substring(index + 1);//求文件名的主文件名和扩展名
                this.Text = filename + "我的记事本";
            }
        }
 
        private void 自动换行ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (自动换行ToolStripMenuItem.Checked)
                rtxtEdit.WordWrap = true;
            else
                rtxtEdit.WordWrap = false;
        }
 
        private void rtxtEdit_TextChanged(object sender, EventArgs e)
        {
 
        }
    }
}

到此这篇关于利用C#实现记事本的功能的示例代码的文章就介绍到这了,更多相关C#记事本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#代码实现为PDF文档添加印章

    C#代码实现为PDF文档添加印章

    为 PDF 文档添加印章可以增强文档的视觉 效果,并传达诸如审批、机密或紧急等重要信息,本文将介绍如何使用 C# 为 PDF 文档添加印章,感兴趣的小伙伴可以了解下
    2026-05-05
  • 基于C#的winform实现数字华容道游戏

    基于C#的winform实现数字华容道游戏

    这篇文章主要为大家详细介绍了基于C#的winform实现数字华容道游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#中Null值处理的终极指南

    C#中Null值处理的终极指南

    这篇文章主要为大家详细介绍了C#中Null值处理的相关方法,主要包括5大运算符对比和30秒消除空引用异常,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-08-08
  • C# 中的委托与事件机制详解

    C# 中的委托与事件机制详解

    本文详细介绍了C#中委托和事件的概念、使用方法和应用场景,包括委托定义、匿名方法、Lambda表达式、事件机制和多播委托的详细说明,委托作为类型安全的函数指针,文章还探讨了如何通过匿名方法和Lambda表达式简化委托的使用,以及多播委托在事件处理中的应用
    2024-10-10
  • C#中HttpWebRequest、WebClient、HttpClient的使用详解

    C#中HttpWebRequest、WebClient、HttpClient的使用详解

    这篇文章主要介绍了C#中HttpWebRequest、WebClient、HttpClient的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • C#使用Spire.PDF for .NET轻松提取PDF图片

    C#使用Spire.PDF for .NET轻松提取PDF图片

    PDF文档作为信息共享和存储的通用格式,常常包含丰富的图片内容,本文将深入探讨如何利用 Spire.PDF for .NET 库,在C#应用程序中实现PDF图片的批量提取,感兴趣的小伙伴可以了解下
    2025-09-09
  • C#如何安全、高效地玩转任何种类的内存之Span的本质

    C#如何安全、高效地玩转任何种类的内存之Span的本质

    为什么要使用指针,什么时候需要使用它,以及如何安全、高效地使用它?本文将讲清楚 What、How 和 Why ,让你知其然,更知其所以然
    2021-08-08
  • 优雅又实用的C#代码优化技巧分享

    优雅又实用的C#代码优化技巧分享

    这篇文章主要为大家整理了一些优雅又实用的C#代码优化技巧,文中的示例代码讲解详细,对我们深入了解C#有一定的帮助,需要的可以参考一下
    2023-06-06
  • C#实现自由组合本地缓存、分布式缓存和数据查询

    C#实现自由组合本地缓存、分布式缓存和数据查询

    这篇文章介绍了C#实现本地缓存、分布式缓存和数据查询的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • C#中String和StringBuilder的简介与区别

    C#中String和StringBuilder的简介与区别

    今天小编就为大家分享一篇关于C#中String和StringBuilder的简介与区别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10

最新评论