用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();elseMessageBox.Show("没有选中任何内容,无法进行复制!");}private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e){rtxtEdit.Paste();}private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e){if (rtxtEdit.SelectedText != "")rtxtEdit.Cut();elseMessageBox.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.txtint 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;}elsertxtEdit.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;elsertxtEdit.WordWrap = false;}private void rtxtEdit_TextChanged(object sender, EventArgs e){}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/205092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样挖掘客户的需求?有哪些方法?

需求是什么? 需求是人们在某一特定的时期内在愿意付出各种可能的成本(时间、精力、现金)购买某个具体或者虚拟的商品、服务的数量或数量集合。例如肚子饿了又懒得做,在线点餐外送就是一种需求,用户愿意多花费比线下饭…

JAVA8时间日期类详解

JAVA8 时间日期类 LocalDateTime类(用于代替Date类使用) 用于表示没有时区信息的日期和时间,这个类是不可变的,线程安全的,用于处理日期和时间 LocalDateTime类常用API 常用方法 方法名说明public static LocalDateTime now()获取当前日期与时间public static LocalDateTi…

MySQl int(1)、int(20) 的区别到底在哪里

MySQl int(1)、int(20) 的区别到底在哪里 常思一二,便得自然… int(1)数据类型介绍 在MySQL中,INT(1) 是一种定义整数类型的数据字段,其中的数字表示显示宽度而不是存储范围。具体说,INT(1) 中的数字 1 表示显示宽度&#xff0…

前端小技巧: 写一个异步程序示例, 使用任务队列替代promise和async/await等语法糖

异步程序设定场景 1 )场景设定 可以使用懒人每做几件事,就要休息一会儿,并且不会影响做事的顺序这种场景来模拟定义单例名称为: lazyMan支持 sleep 和 eat 两个方法支持链式调用 2 ) 调用示例 const lm new LazyMan(www) lm.eat(苹果).…

LinuxBasicsForHackers笔记 --添加和删​​除软件

使用apt处理软件 apt (Advanced Packaging Tool)。可以使用 apt-get 下载和安装新的软件包,也可以用它更新和升级软件。 许多 Linux 用户更喜欢使用 apt 命令而不是 apt-get。它们在很多方面都很相似,但 apt-get 具有更多功能。 搜索包 在下载软件包之…

高级搜索——ST表,离线RMQ问题

文章目录 前言可重复贡献问题ST表的定义ST表的存储结构ST表的预处理预处理的实现 ST表的区间查询对于k的获取区间查询的实现 OJ链接 前言 对于查询区间最值的方法,我们常用的就是线段树,树状数组,单调队列,而树状数组更适合用于快…

解决Qt发送信号指定重载

现象 信号发送者找不到正确的信号函数 connect(ui->LSpinBox,&QSpinBox::valueChanged,ui->hSlider,&QSlider::setValue);QSpinBox的valueChanged函数分为int和QString两种,存在函数重载,需让编译器加以区分。 不区分的话会爆出&#xff1…

让 ChatGPT 永远重复输出一个词,它就能告诉你很多秘密数据?国内的大模型表现如何?

文章目录 让 ChatGPT 永远重复输出一个词,它就能告诉你很多秘密数据?国内的大模型表现如何?文心一言通义千问百川智能智普清言moonshot星火附件ChatGPT Data Extraction Example 让 ChatGPT 永远重复输出一个词,它就能告诉你很多秘…

【互斥锁不当使用导致的条件竞争】2021_DiceCTF_hashbrown

前言 这个题目还挺有意思的,他并不像之前做的题目直接给你一个贴脸的 UAF 等,而是把 UAF 放在了条件竞争的环境下,其实条件竞争这个漏洞在内核中经常出现。 这里题目没有去符号,所以逆向的难度不是很大,但作者似乎在…

Android蓝牙协议栈fluoride(二) - 软件框架

概述 fluoride 协议栈在整个软件框架中作为一个中间件的角色,向上对接APP,向下对接蓝牙芯片。fluoride采用C语言实现,与APP(Jave)通信采用JNI机制;与蓝牙芯片通信使用HCI硬件接口(HCI软件协议参考蓝牙核心规范&#x…

[ffmpeg] find 编码器

背景 整理 ffmpeg 中,如何通过名字或者 id 找到对应编码器的。 具体流程 搜索函数 avcodec_find_encoder // 通过 ID 搜索编码器 avcodec_find_encoder_by_name // 通过名字搜索编码器源码分析 ffmpeg 中所有支持的编码器都会注册到 codec_list.c 文件中&…

毕设:《基于hive的音乐数据分析系统的设计与实现》

文章目录 环境启动一、爬取数据1.1、歌单信息1.2、每首歌前20条评论1.3、排行榜 二、搭建环境1.1、搭建JAVA1.2、配置hadoop1.3、配置Hadoop环境:YARN1.4、MYSQL1.5、HIVE(数据仓库)1.6、Sqoop(关系数据库数据迁移) 三、hadoop配置内存四、导…

笙默考试管理系统-MyExamTest----codemirror(45)

笙默考试管理系统-MyExamTest----codemirror(44) 目录 笙默考试管理系统-MyExamTest----codemirror(44) 一、 笙默考试管理系统-MyExamTest----codemirror 二、 笙默考试管理系统-MyExamTest----codemirror 三、 笙默考试…

【华为OD题库-085】路灯照明II-Java

题目 在一条笔直的公路上安装了N个路灯,从位置0开始安装,路灯之间间距固定为100米。 每个路灯都有自己的照明半径,请计算第一个路灯和最后一个路灯之间,无法照明的区间的长度和。输入描述 第一行为一个数N,表示路灯个数…

FFA 2023 明日开幕,Flink 智能诊断、小红书流批一体实践精彩来袭

近年来,流批一体的技术思想势头火热,即“将批处理和流处理相结合,实现更好的数据处理能力”,已成功从理论层面走进现实世界。Flink 是一款高吞吐量、低延迟的流处理引擎,具备统一接口、高性能、低延迟、容错性和可扩展…

绑定域名简单教程

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 🌤️安装Nginx环境 &…

前端使用socket.io

前端使用socket.io 前言 socket.IO 是一个库,可以在客户端和服务器之间实现 低延迟, 双向 和 基于事件的 通信。使用socket.IO要确保客户端和服务端都是socket.IO构建的。socket.IO内部封装了很多现成的api,比如心跳监测,断开重来等&#x…

2024黑龙江省职业院校技能大赛信息安全管理与评估赛项规程

2024黑龙江省职业院校技能大赛暨国赛选拔赛 “GZ032信息安全管理与评估”赛项规程 极安云科专注技能竞赛,包含网络建设与运维和信息安全管理与评估两大赛项,及各大CTF,基于两大赛项提供全面的系统性培训,拥有完整的培训体系。团队…

【Qt开发流程】之元对象系统

描述 Qt的元对象系统(Meta-Object System)是Qt框架的核心机制之一,它提供了运行时类型信息(RTTI)和信号与槽(Signals and Slots)机制的支持。元对象系统在Qt中扮演了很重要的角色,它…

适合炎热天气的最佳葡萄酒有哪些?

每年的夏天,白葡萄酒和玫瑰红葡萄酒总会是葡萄酒爱好者的首选,这是为什么呢?随着春天的逝去,夏天悄悄地到来,空气变得炎热和沉重,树木变得越来越郁郁葱葱,白天的时间更长而晴朗了。多雨的五月变…