C#记事本项目开发,一个可以实现批量操作的记事本!【附源码】

简介: C#记事本项目开发,一个可以实现批量操作的记事本!【附源码】
基于C#开发的一款记事本软件,包括记事本文件的新建、打开、读取、保存、文本的加粗、倾斜、字体、字号,记事本的批量操作等。

@TOC

Hello!大灰狼又来和大家分享值得学习的C#开发项目了,今天和大家分享一个大家应该都比较熟悉的开发项目---“记事本”。

很多小伙伴可能也都使用过记事本来记录一些自己比较重要或者容易忘记的事情,但是你知道它是怎么开发出来的嘛?

同样和之前大灰狼和大家分享的计算器项目一样,记事本项目也可以使用很多不同的语言开发,今天大灰狼就先和大家介绍一下使用C#开发记事本的思路和流程。

同时对于Java和C#在GUI编程上相同和不同之处,小伙伴可以看我之前的这篇文章“Java交互界面实现计算器开发设计【附函数源码】”,

好了,废话不多说,直接上教程。

C#的记事本开发需要我们定义两个窗体,也就是一个承载所有记事本的父窗体,一个具有记事本基本功能的子窗体。

.

记事本子窗体

所以我们首先来聊一下具有记事本基本功能的子窗体的开发。

在C#的窗体应用中,我们可以直接对界面进行控件布局,不需要使用代码定义控件,在这一点上C#的窗体应用开发是很不错的。

那么在记事本应用中,我们应该添加在窗体中的控件应该有,文件的新建、打开、保存,以及字体的样式、字号、是否加粗倾斜这些基本的记事本控件。同时当然还需要记事本的编辑文本框,方便我们对内容的修改和输入。

了解了这些基本的控件之后,就是我们对每一个控件所绑定的函数的书写了,

获取系统字体函数

首先我们是在设置字体时的需要获取到系统的所有字体样式,

通过以下函数实现:

//获取系统字体
        private void FormSon_Load(object sender, EventArgs e)
        {
            //窗体加载时要加载的字体
            InstalledFontCollection MyFontStaly = new InstalledFontCollection();
            //获取InstalledFontCollection对象的数据
            FontFamily[] ff = MyFontStaly.Families;
            //定义一个新的ArrayList数组列表
            ArrayList list = new ArrayList();
            //获取到字体数组的列表的长度
            int count = ff.Length;
            for (int i = 0; i < count; i++)
            {
                //获取到字体数组的字体的名字
                string FontName = ff[i].Name;
                //将字体保存在字体控件中
                toolStripComboBox_fonyStaly.Items.Add(FontName);
            }
        }

字体空间函数

在获取到系统可以设置的所有字体样式之后,就是我们在点击字体时,字体变化的控件了,在这里我们需要在改变字体索引的控件中进行设置,

函数如下:

  //改变字体的索引
    private void toolStripComboBox_fonyStaly_SelectedIndexChanged(object sender, EventArgs e)
    {
        //接收当前字体框的文本
        string fontname = toolStripComboBox_fonyStaly.Text;
        //接收当前字号框的数值
        float fontsize = float.Parse(toolStripComboBox_fontSize.Text);
        textBox_Text.Font = new Font(fontname, fontsize);
    }

字号空间函数

设置完成字体控件的属性之后,就是字号属性了,与设置字体控件的思路相似,我们同样需要先获取到改变字号的索引,函数如下:

   //改变字号的索引
    private void toolStripComboBox_fontSize_SelectedIndexChanged(object sender, EventArgs e)
    {
        //接收当前字体框的文本
        string fontname = toolStripComboBox_fonyStaly.Text;
        //接收当前字号框的数值
        float fontsize = float.Parse(toolStripComboBox_fontSize.Text);
        textBox_Text.Font = new Font(fontname, fontsize);
    }

在字号发生变化时,我们需要将文本框中的内容的字号进行改变,这个时候就需要我们在相应的函数中进行设置:

//当字号发生改变时
private void toolStripComboBox_fontSize_TextChanged(object sender, EventArgs e)
{
    //接收当前字体框的文本
    string fontname = toolStripComboBox_fonyStaly.Text;
    //接收当前字号框的数值
    float fontsize = float.Parse(toolStripComboBox_fontSize.Text);
    textBox_Text.Font = new Font(fontname, fontsize);
}

加粗控件函数

  //加粗按钮
    private void toolStripButton_over_Click(object sender, EventArgs e)
    {
        //点击加粗按钮,字体加粗,加粗是点击按钮取消加粗

        //如果目前处于未加粗状态,点击进行加粗
        if (textBox_Text.Font.Bold == false)
        {
            textBox_Text.Font = new Font(textBox_Text.Font, FontStyle.Bold);

        }
        //如果当前处于加粗状态,点击取消加粗
        else
        {
            textBox_Text.Font = new Font(textBox_Text.Font, FontStyle.Regular);

        }
        
    }

倾斜控件函数

//倾斜按钮
private void toolStripButton_slanr_Click(object sender, EventArgs e)
{
    if (textBox_Text.Font.Italic == false)
    {
        textBox_Text.Font = new Font(textBox_Text.Font, FontStyle.Italic);
    }
    else
    {
        textBox_Text.Font = new Font(textBox_Text.Font, FontStyle.Regular);
    }
}

保存控件函数

在做保存控件的时候,我们需要考虑到一点,就是我们所保存的文件信息,是否是新建的文本框,如我们是新建的记事本,则在保存时则需要选择保存路径和文件名,如果我们是对原有的文件进行二次编辑,则我们在点击保存按钮时只需要进行保存即可,无需重新选择文件的保存路径。

函数代码如下:

//保存按钮
private void toolStripButton_save_Click(object sender, EventArgs e)
{

    
    //创建一个筛选器
    saveFileDialog1.Filter = ("文本文档(*,txt)|*.txt");
    // 判断如果当前文本框不为空,则进行保存
    if (textBox_Text.Text.Trim() != "")
    {
        //如果记事本文件是新的,则选择路径保存
        if (this.Text == "记事本")
        {
            //保存文件到用户的指定目录下
            //判断用户是保存还是取消
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                //获取用户选择的文件及路径
                string path = saveFileDialog1.FileName;
                //保存文件到指定路径
                StreamWriter sw = new StreamWriter(path, false);
                sw.WriteLine(textBox_Text.Text.Trim());
                //在窗体上方显示路径
                this.Text = path;
                //清空缓存
                sw.Flush();
                sw.Close();
            }
        }
        //如果是已经打开的文件,则直接进行保存
        else
        {
            //保存文件到用户的指定目录下                  
            //获取用户选择的文件及路径
            string path = this.Text;
            //保存文件到指定路径
            StreamWriter sw = new StreamWriter(path, false);
            sw.WriteLine(textBox_Text.Text.Trim());
            sw.Flush();
            sw.Close();
            
        }
        
        
    }
    //如果为空,则进行消息框提示
    else
    {
        MessageBox.Show("当前文本框为空!\n不可进行保存!", "警告");
    }
}

打开文件控件函数:

在进行文件的打开操作时,我们需要对所打开的文件进行筛选,只要求打开txt格式的文本文件即可。

实现函数如下:

   //打开文件
    private void toolStripButton_open_Click(object sender, EventArgs e)
    {
        //筛选一个打开文件
        openFileDialog1.Filter = ("文本文档(*,txt)|*.txt");
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            string path = openFileDialog1.FileName;
            StreamReader sr = new StreamReader(path, Encoding.UTF8);
            string text = sr.ReadToEnd();
            //在文本框上方显示路径
            this.Text = path;
            textBox_Text.Text = text;
            sr.Close();
        }
    }

新建文本控件函数

在点击新建文本之后,我们需要将原来编辑的内容进行清空并且重新建立编辑。

函数如下:

//新建文本
private void toolStripButton1_Click(object sender, EventArgs e)
{
    this.Text = "记事本";
    textBox_Text.Text = "";
    toolStripTextBox1.Text = "";
}

窗体关闭控件函数

在我们的文本被修改之后,如果用户点击关闭按钮,这个时候就需要对用户进行提示,如果用户选择关闭,则进行记事本文本框的关闭操作,并且不会进行保存,如果用户点击了否,则重新回到编辑页面进行编辑。

函数如下:

  ///窗体关闭时
    private void FormSon_FormClosing(object sender, FormClosingEventArgs e)
    {
        //如果文件已经被修改,则进行提示
        if (toolStripTextBox1.Text == "文本已修改")
        {
            DialogResult dr =  MessageBox.Show("文本已经修改!是否继续退出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            
            //如果用户选择是,则退出
            if (dr == DialogResult.Yes)
            {
                this.Dispose();
            }
            //如果用户选择否,则返回页面
            else 
            {
                e.Cancel = true;
            }

        }
    }

在以上这些函数完成之后,我们的记事本文本编辑窗口就完成了,看一下效果:

在这里插入图片描述

.

主控页面父窗体

接下来就是承载记事本编辑窗口的父窗体了。

在父窗体中需要包括的控件有记事本的新建、关闭、全部关闭、退出等。

新建记事本

设置新建记事本控件属性的时候,我们只需要调用我们刚刚完成的记事本子窗体即可。

函数如下:

//新建
private void ToolStripMenuItem_newfile_Click(object sender, EventArgs e)
{
    //定义一个变量接收子窗体
    FormSon son = new FormSon();
    //定义子窗体的父窗体
    son.MdiParent = this;
    //显示子窗体
    son.Show();
}

关闭窗体

关闭窗体时,我们所关闭的是当前处于最前方的活跃的窗体。

函数如下:

//关闭窗体
private void ToolStripMenuItem_closefile_Click(object sender, EventArgs e)
{
    //接收当前窗体
    Form form = this.ActiveMdiChild;
    //关闭当前窗体
    form.Close();
}

关闭全部窗体

点击关闭全部窗体时,我们会将已经打开的所有记事本窗体全部关闭。

函数如下:

//关闭全部窗体
private void ToolStripMenuItem_closeall_Click(object sender, EventArgs e)
{
    //循环遍历当前已经打开的所有窗体的集合
    foreach (Form form in this.MdiChildren)
    {
        Form frm = this.ActiveMdiChild;
        frm.Close();
    }
}

退出控件

最后一个需要设置的是退出,点击时会将记事本窗体整体关闭,因此,我们只需要将当前打开的窗体关闭即可。

函数如下:

//退出
private void ToolStripMenuItem_quit_Click(object sender, EventArgs e)
{
    this.Close();
}

设置完父窗体之后,记事本的整体开发就完成了,现在看一下整体效果。

在这里插入图片描述

==觉得不错记得点赞关注大灰狼哟!==

==可以点击此处下载“开发源码”,

==大灰狼陪你一起进步!==

在这里插入图片描述

目录
相关文章
|
3月前
|
开发框架 前端开发 JavaScript
C# 6.0+JavaScript云LIS系统源码  云LIS实验室信息管理新型解决方案
云LIS是为区域医疗提供临床实验室信息服务的计算机应用程序,可协助区域内所有临床实验室相互协调并完成日常检验工作,对区域内的检验数据进行集中管理和共享,通过对质量控制的管理,最终实现区域内检验结果互认。其目标是以医疗服务机构为主体,以医疗资源和检验信息共享为目标,集成共性技术及医疗服务关键技术,建立区域协同检验,最大化利用有限的医疗卫生资源。
140 1
|
3月前
|
数据采集 安全 JavaScript
C#医院手术麻醉信息管理系统源码 对接院内HIS、LIS、PACS
手麻系统的功能涵盖了麻醉临床业务管理、麻醉运营业务管理以及手术进程管理等,实现了将多种麻醉病历文书与医院HIS系统的有效关联,让手术室人员、设备资源和信息资源高度共享;实现了手术安排、各种统计报表等科室管理和科研工作的需求,可借其收集临床数据、进行整合分析,为围术期临床信息、管理、科研提供整体解决方案;该系统的运行,为医护人员提供了流程化、信息化、自动化、智能化的临床业务综合管理。
71 5
|
3月前
|
前端开发 Java C#
java/C#语言开发的医疗信息系统11套源码
java/C#语言开发的医疗信息系统11套源码
73 2
|
1月前
|
存储 Oracle 关系型数据库
PACS源码,C#语言数字医学影像系统成品源码
**数字医学影像系统(RIS/PACS)**采用C#开发,基于C/S架构,配Oracle数据库,具备自主版权,适用于项目实施。系统包含分诊、超声、放射、内镜、病理等工作站,支持基本信息维护、报表查询和系统维护。功能亮点有:WorkList管理、影像采集传输、存储检索、图像处理、多序列浏览、流程控制、报告录入与审核、支持多种影像设备及高级影像处理。RIS与PACS数据库同步,并集成HIS、电子病历等系统接口。全面遵循DICOM3.0标准。
PACS源码,C#语言数字医学影像系统成品源码
|
21天前
|
BI 数据处理
一体化的医学实验室信息系统源码,C#LIS系统源码
面向医学实验室的一体化平台提供标本流程管理、报告发布及科室管理支持。它与HIS无缝对接,简化患者信息录入,实现检验结果实时同步。系统自动处理数据、分类样本、计算参考范围,并对异常结果预警。条码管理简化样本追踪,质控管理提升检测准确性。平台还支持数据审核发布、历史结果查询对比、灵活报表打印及统计分析等功能,辅助科室管理和试剂库存控制,加强科室间沟通协作。
一体化的医学实验室信息系统源码,C#LIS系统源码
|
2月前
|
开发框架 前端开发 .NET
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
集成于VS 2019,EXT.NET前端和ASP.NET后端,搭配MSSQL 2018数据库。系统覆盖样品管理、数据分析、报表和项目管理等实验室全流程。应用广泛,包括生产质检(如石化、制药)、环保监测、试验研究等领域。随着技术发展,现代LIMS还融合了临床、电子实验室笔记本和SaaS等功能,以满足复杂多样的实验室管理需求。
51 3
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
|
29天前
|
数据采集 监控 BI
C#实验室检验LIS信息系统源码 微生物检验、质控维护
LIS系统的主要目标是为检验室开展检验工作提供更加有效的系统支持。该系统将尽量减少以人工操作的方式来实现信息转移,减少在接收检验项目、报告结果和保存记录等工作中可能会出现的人为误差,为检验结果查询提供更有效的方法,节省了管理信息所需的琐碎时间和精力。为实验室技术人员提供智能化的运行模式,使处理诸如按照规程审核检验结果、取消检验项目、分析、处理存在重大疑问的检验结果、执行特殊的命令和处理质量控制等问题更轻松自如,这将使检验人员更快地获得准确清晰的检验结果。为临床医护人员提供在线设施,使他们可以及时准确地获得相关实验室信息。确保检验结果的可靠性和准确性,利用实验室管理信息系统的仪器监控和质量控制,
24 0
|
2月前
|
监控 C#
技术经验解读:【转】c#实现魔兽(warIII)中显血和改键功能(附源码)(不影响聊天打字)
技术经验解读:【转】c#实现魔兽(warIII)中显血和改键功能(附源码)(不影响聊天打字)
47 0
|
3月前
|
存储 运维 BI
基于C#-VC-MSSQL开发的全套PACS系统源码 3D PACS系统源码:可实现医学影像获取、存档、观片、处理、打印多项应用
PACS的功能价值在于通过连接不同的影像设备,存储与管理图像,图像的调用与后处理,实现资源共享,降低成本,达到提高工作效率、提升医疗水平的目地;
46 1
基于C#-VC-MSSQL开发的全套PACS系统源码  3D PACS系统源码:可实现医学影像获取、存档、观片、处理、打印多项应用
|
3月前
|
数据采集 存储 安全
C#手术麻醉系统源码 可对接HIS LIS PACS 医疗系统各类设备
术麻醉信息管理系统主要还是为了手术室开发提供全面帮助的系统,其主要是由监护设备数据采集子系统和麻醉临床系统两个子部分组成。包括从手术申请到手术分配,再到术前访视、术中记录及术后恢复的全过程中都可以得到全方位的保障。
36 4
C#手术麻醉系统源码 可对接HIS  LIS   PACS 医疗系统各类设备