打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#编写一个较完整的记事本程序

开发环境

Visual Studio 2019

  • 至少需安装 .NET桌面开发

创建项目并配置

创建窗体文件

配置项目名称及框架

设计界面

创建窗体文件,将控件摆放位置如下,参考系统自带的记事本程序

窗体添加的控件和组件如下

  • 控件及组件在工具箱查找

窗体属性

快捷键设置

  • 杂项 --> ShortcutKeys

程序属性

项目属性如下图,在创建项目时就已定好了框架,如果在另一台主机上的框架版本比目前项目框架版本低的话,则运行不起来

  • 文章末尾有整个程序的压缩包链接可下载,如需直接运行则需下载对应的.NET Framework 4.7.2框架

程序图标可在此设置,生成程序后的图标如下图,此文件夹下的程序文件可在第二台主机上直接运行(项目\bin\Debug目录下就是生成程序文件的存放位置,双击程序文件即可运行)

代码演示

代码开头的using部分

  • 注释部分需自行添加

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;//提供了关于文件、数据流的读取和写入操作using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Diagnostics;//提供了用于与事件日志、性能计数器和系统进程进行交互的类

主要功能

1.新建文件:

    private void 新建NToolStripMenuItem_Click(object sender, EventArgs e)    {        if (txtBox.Modified == true)        {            DialogResult dr = MessageBox.Show("文件发生变化,是否更改保存?", "注意", MessageBoxButtons.YesNoCancel);            if (dr == DialogResult.Yes)            {                保存SToolStripMenuItem_Click(sender, e);                return;            }            else if (dr == DialogResult.Cancel)            {                return;            }            txtBox.Clear();            this.Text = "NewNotepad";        }        else        {            txtBox.Clear();            this.Text = "NewNotepad";        }    }
新建文件

2.打开:

    private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)    {        if (openFileDialog.ShowDialog() == DialogResult.OK)        {            filename = openFileDialog.FileName;            OpenFile();        }    }    protected void OpenFile()    {        try        {            txtBox.Clear();            txtBox.Text = File.ReadAllText(filename);        }        catch        { MessageBox.Show("Error!"); }    }
打开

3.保存:

    private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)    {        try        {            StreamWriter sw = File.AppendText(Application.ExecutablePath);            sw.Write(txtBox.Text);            sw.Dispose();        }        catch        {            SaveFileDialog sf = new SaveFileDialog();            sf.DefaultExt = "*.txt";            sf.Filter = "文本文档(.txt)|*.txt";            if (sf.ShowDialog() == DialogResult.OK)            {                StreamWriter sw = File.AppendText(sf.FileName);                sw.Write(txtBox.Text);                sw.Dispose();            }        }    }
保存

4.另存为:

    private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e)    {        string name;        //SaveFileDialog类        SaveFileDialog save = new SaveFileDialog();        //过滤器        save.Filter = "*.txt|*.TXT|(*.*)|*.*";        //显示        if (save.ShowDialog() == DialogResult.OK)        {            name = save.FileName;            FileInfo info = new FileInfo(name);            //info.Delete();            StreamWriter writer = info.CreateText();            writer.Write(txtBox.Text);            writer.Close();        }    }
另存为

5.打印:

    private void 打印PToolStripMenuItem_Click(object sender, EventArgs e)    {        //显示允许用户选择打印机的选项及其它打印选项的对话框        this.printDialog.Document = this.printDocument;        this.printDialog.PrinterSettings = this.pageSetupDialog.PrinterSettings;        //向打印机发送打印指令        if (this.printDialog.ShowDialog() == DialogResult.OK)        {            try            {                this.printDocument.Print();            }            catch (Exception ex)            {                MessageBox.Show(ex.Message, "错误信息!", MessageBoxButtons.OK, MessageBoxIcon.Error);            }        }    }
打印

6.编辑:

  • 根据输入是否输入内容控制是否启用功能

    private void 编辑ToolStripMenuItem_Click(object sender, EventArgs e)    {        剪切ToolStripMenuItem.Enabled = txtBox.Modified;        if (txtBox.SelectedText == "")        {            剪切ToolStripMenuItem.Enabled = false;            复制ToolStripMenuItem.Enabled = false;            删除ToolStripMenuItem.Enabled = false;        }        else        {            剪切ToolStripMenuItem.Enabled = true;            复制ToolStripMenuItem.Enabled = true;            删除ToolStripMenuItem.Enabled = true;        }        if (txtBox.Text == "")        {            查找ToolStripMenuItem.Enabled = false;            查找下一个ToolStripMenuItem.Enabled = false;            查找上一个ToolStripMenuItem.Enabled = false;            替换ToolStripMenuItem.Enabled = false;        }        else        {            查找ToolStripMenuItem.Enabled = true;            查找下一个ToolStripMenuItem.Enabled = true;            查找上一个ToolStripMenuItem.Enabled = true;            替换ToolStripMenuItem.Enabled = true;        }        if (Clipboard.GetText() == "")            粘贴ToolStripMenuItem.Enabled = false;        else            粘贴ToolStripMenuItem.Enabled = true;    }
编辑

7.查找:

  • 查找功能不够完善,混用查找上一项和查找下一项效果不理想

    TextBox txtInput = new TextBox()    {        Font = new Font("宋体", 10)    };    TextBox txtInputReplace = new TextBox()    {        Font = new Font("宋体", 10)    };    Label lblSearch = new Label    {        Text = "查找内容:",        Size = new Size(65, 25),        Location = new Point(5, 22)    };    Label lblDirection = new Label    {        Text = "查找方向:",        Size = new Size(65, 25),        Location = new Point(5, 58)    };    Button FindNext = new Button    {        Name = "btnFindNext",        Text = "查找下一项",        Size = new Size(80, 25),        Location = new Point(265, 15)    };    Button Cancel = new Button    {        Name = "btnCancel",        Text = "取消",        Size = new Size(80, 25),        Location = new Point(265, 50)    };    RadioButton down = new RadioButton    {        Name = "radDown",        Text = "向下",        Size = new Size(55, 25),        Location = new Point(70, 53),        Checked = true    };    RadioButton upward = new RadioButton    {        Name = "radUpward",        Text = "向上",        Size = new Size(55, 25),        Location = new Point(140, 53),        Checked = false    };    new Form FindForm = new Form    {        Text = "查找文本",        FormBorderStyle = FormBorderStyle.FixedSingle,        MaximizeBox = false,        MinimizeBox = false    };    private void 查找ToolStripMenuItem_Click(object sender, EventArgs e)    {        //显示查找对话框        txtInput.Size = new Size(190, 33);        txtInput.Location = new Point(70, 15);        txtInput.Multiline = true;        FindNext.Click += new EventHandler(Direction_Click);        //FindNext.Click += new EventHandler(Visible_Click);        Cancel.Click += new EventHandler(Cancel_Click);        FindForm.Controls.Add(lblSearch);        FindForm.Controls.Add(lblDirection);        FindForm.Controls.Add(txtInput);        FindForm.Controls.Add(down);        FindForm.Controls.Add(upward);        FindForm.Controls.Add(FindNext);        FindForm.Controls.Add(Cancel);        FindForm.Top = this.Top + 50;        FindForm.Left = this.Left + 50;        FindForm.Height = 120;        FindForm.Width = 380;        FindForm.StartPosition = FormStartPosition.CenterParent;        FindForm.ShowDialog();    }    private void Cancel_Click(object sender, EventArgs e)    {        //关闭对话框        FindForm.Close();        ReplaceForm.Close();    }    private void Direction_Click(object sender, EventArgs e)    {        //选择字符查找方向        if (down.Checked == true)        {            Find_Click(sender, e);        }        else if (upward.Checked == true)        {            FindLast_Click(sender, e);        }    }            int nextPosition, firstPosition;    string word;    Boolean IF = false;    private void Find_Click(object sender, EventArgs e)    {        txtBox.Focus();        FindWords(txtInput.Text);    }    private void FindWords(string words)    {        //向下查找字符        if (nextPosition >= txtBox.Text.Length)            nextPosition = 0;        firstPosition = txtBox.Text.IndexOf(words, nextPosition);        if (firstPosition == -1)            nextPosition = 0;        else        {            txtBox.Select(firstPosition, words.Length);            nextPosition = firstPosition + 1;        }        word = words;        IF = true;    }
查找

8. 查找下一项 :

    private void 查找下一个ToolStripMenuItem_Click(object sender, EventArgs e)    {        //查找下一项,如果未查找过,则显示查找对话框        down.Checked = true;        upward.Checked = false;        try        {            FindWords(word);        }        catch        {            查找ToolStripMenuItem_Click(sender, e);        }    }
查找下一项

9.查找上一项:

    private void FindWordsLast(string words)    {        //向上查找字符        if (IF == false)            nextPosition = txtBox.Text.Length;        if (nextPosition < 0)            nextPosition = txtBox.Text.Length;        firstPosition = txtBox.Text.LastIndexOf(words, nextPosition);        if (firstPosition == -1)            nextPosition = txtBox.Text.Length;        else        {            txtBox.Select(firstPosition, words.Length);            nextPosition = firstPosition - 1;        }        word = words;        IF = true;    }    private void 查找上一个ToolStripMenuItem_Click(object sender, EventArgs e)    {        //查找上一项,如果未查找过,则显示查找对话框        upward.Checked = true;        down.Checked = false;        try        {            FindWordsLast(word);        }        catch        {            查找ToolStripMenuItem_Click(sender, e);        }    }
查找上一项

10.替换:

    Label LblReplace = new Label    {        Name = "lblReplace",        Text = "替换:",        Size = new Size(55, 25),        Location = new Point(15, 50)    };    Form ReplaceForm = new Form    {        Text = "替换文本",        FormBorderStyle = FormBorderStyle.FixedSingle,        MaximizeBox = false,        MinimizeBox = false    };    private void 替换ToolStripMenuItem_Click(object sender, EventArgs e)    {        txtInput.Size = new Size(190, 30);        txtInput.Location = new Point(70, 12);        txtInput.Multiline = true;        txtInputReplace.Size = new Size(190, 30);        txtInputReplace.Location = new Point(70, 47);        txtInputReplace.Multiline = true;        Button Replace = new Button        {            Name = "btnReplace",            Text = "替换",            Size = new Size(80, 25),            Location = new Point(265, 15)        };        Replace.Click += new EventHandler(Replace_Click);        Cancel.Click += new EventHandler(Cancel_Click);        ReplaceForm.Controls.Add(lblSearch);        ReplaceForm.Controls.Add(LblReplace);        ReplaceForm.Controls.Add(txtInput);        ReplaceForm.Controls.Add(txtInputReplace);        ReplaceForm.Controls.Add(Replace);        ReplaceForm.Controls.Add(Cancel);        ReplaceForm.Top = this.Top + 50;        ReplaceForm.Left = this.Left + 50;        ReplaceForm.Height = 140;        ReplaceForm.Width = 380;        ReplaceForm.StartPosition = FormStartPosition.CenterParent;        ReplaceForm.ShowDialog();    }    private void Replace_Click(object sender, EventArgs e)    {        txtBox.Text = txtBox.Text.Replace(txtInput.Text, txtInputReplace.Text);    }
替换

11. 字体选择:

  • 直接调用控件即可

    private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)    {        //提示用户从本地计算机安装的字体中选择字体字号        FontDialog fontDialog = new FontDialog();        if (fontDialog.ShowDialog() == DialogResult.OK)        {            txtBox.Font = fontDialog.Font;        }    }
字体选择

12. 关于记事本:

  • 新建一个窗口,根据自己的喜好添加标签及摆放位置

    private void 关于记事本ToolStripMenuItem_Click(object sender, EventArgs e)    {        //关于记事本说明        Label lblTitle = new Label()        {            Text = "多功能记事本",            Size = new Size(150, 25),            Location = new Point(100, 50)        };        Label lblEdition = new Label()        {            Text = "版本号:个性测试版",            Size = new Size(150, 25),            Location = new Point(85, 100)        };        Label lblMail = new Label()        {            Text = "E-Mail:",            Size = new Size(55, 25),            Location = new Point(30, 180)        };        LinkLabel llblMail = new LinkLabel()        {            Text = "2417525822@qq.com",            Size = new Size(110, 25),            Location = new Point(85, 180)        };        Label lblCNDS = new Label()        {            Text = "CNDS博客:",            Size = new Size(65, 25),            Location = new Point(20, 220)        };        LinkLabel llblCNDS = new LinkLabel()        {            Text = "https://blog.csdn.net/UFO_Harold",            Size = new Size(200, 25),            Location = new Point(85, 220)        };        Form about = new Form        {            Text = "关于记事本",            FormBorderStyle = FormBorderStyle.FixedSingle,            MaximizeBox = false        };        llblCNDS.Click += new EventHandler(LlblCNDS_Click);        about.Controls.Add(lblTitle);        about.Controls.Add(lblEdition);        about.Controls.Add(lblMail);        about.Controls.Add(llblMail);        about.Controls.Add(lblCNDS);        about.Controls.Add(llblCNDS);        about.Top = this.Top + this.Height / 2 - about.Height / 2;        about.Left = this.Left + this.Width / 2 - about.Width / 2;        about.StartPosition = FormStartPosition.CenterParent;        about.ShowDialog();    }
关于记事本
  • 效果如图

完整代码

namespace Notepad{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        string filename = "";        public Form1(string filename)        {            InitializeComponent();            if (filename != null)            {                this.filename = filename;                OpenFile();            }        }        private void 新建NToolStripMenuItem_Click(object sender, EventArgs e)        {            if (txtBox.Modified == true)            {                DialogResult dr = MessageBox.Show("文件发生变化,是否更改保存?", "注意", MessageBoxButtons.YesNoCancel);                if (dr == DialogResult.Yes)                {                    保存SToolStripMenuItem_Click(sender, e);                    return;                }                else if (dr == DialogResult.Cancel)                {                    return;                }                txtBox.Clear();                this.Text = "NewNotepad";            }            else            {                txtBox.Clear();                this.Text = "NewNotepad";            }        }        private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)        {            if (openFileDialog.ShowDialog() == DialogResult.OK)            {                filename = openFileDialog.FileName;                OpenFile();            }        }        protected void OpenFile()        {            try            {                txtBox.Clear();                txtBox.Text = File.ReadAllText(filename);            }            catch            { MessageBox.Show("Error!"); }        }        private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)        {            try            {                StreamWriter sw = File.AppendText(Application.ExecutablePath);                sw.Write(txtBox.Text);                sw.Dispose();            }            catch            {                SaveFileDialog sf = new SaveFileDialog();                sf.DefaultExt = "*.txt";                sf.Filter = "文本文档(.txt)|*.txt";                if (sf.ShowDialog() == DialogResult.OK)                {                    StreamWriter sw = File.AppendText(sf.FileName);                    sw.Write(txtBox.Text);                    sw.Dispose();                }            }        }        private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e)        {            string name;            //SaveFileDialog类            SaveFileDialog save = new SaveFileDialog();            //过滤器            save.Filter = "*.txt|*.TXT|(*.*)|*.*";            //显示            if (save.ShowDialog() == DialogResult.OK)            {                name = save.FileName;                FileInfo info = new FileInfo(name);                //info.Delete();                StreamWriter writer = info.CreateText();                writer.Write(txtBox.Text);                writer.Close();            }        }        private void 页面设置ToolStripMenuItem_Click(object sender, EventArgs e)        {            //弹出页面设置界面            pageSetupDialog.Document = printDocument;            pageSetupDialog.ShowDialog();        }        private void 打印PToolStripMenuItem_Click(object sender, EventArgs e)        {            //显示允许用户选择打印机的选项及其它打印选项的对话框            this.printDialog.Document = this.printDocument;            this.printDialog.PrinterSettings = this.pageSetupDialog.PrinterSettings;            //向打印机发送打印指令            if (this.printDialog.ShowDialog() == DialogResult.OK)            {                try                {                    this.printDocument.Print();                }                catch (Exception ex)                {                    MessageBox.Show(ex.Message, "错误信息!", MessageBoxButtons.OK, MessageBoxIcon.Error);                }            }        }        private void 退出XToolStripMenuItem_Click(object sender, EventArgs e)        {            Application.Exit();        }        private void 编辑ToolStripMenuItem_Click(object sender, EventArgs e)        {            剪切ToolStripMenuItem.Enabled = txtBox.Modified;            if (txtBox.SelectedText == "")            {                剪切ToolStripMenuItem.Enabled = false;                复制ToolStripMenuItem.Enabled = false;                删除ToolStripMenuItem.Enabled = false;            }            else            {                剪切ToolStripMenuItem.Enabled = true;                复制ToolStripMenuItem.Enabled = true;                删除ToolStripMenuItem.Enabled = true;            }            if (txtBox.Text == "")            {                查找ToolStripMenuItem.Enabled = false;                查找下一个ToolStripMenuItem.Enabled = false;                查找上一个ToolStripMenuItem.Enabled = false;                替换ToolStripMenuItem.Enabled = false;            }            else            {                查找ToolStripMenuItem.Enabled = true;                查找下一个ToolStripMenuItem.Enabled = true;                查找上一个ToolStripMenuItem.Enabled = true;                替换ToolStripMenuItem.Enabled = true;            }            if (Clipboard.GetText() == "")                粘贴ToolStripMenuItem.Enabled = false;            else                粘贴ToolStripMenuItem.Enabled = true;        }        private void 撤销ToolStripMenuItem_Click(object sender, EventArgs e)        {            if (txtBox.CanUndo)            {                txtBox.Undo();                txtBox.ClearUndo();            }        }        private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)        {            txtBox.Cut();        }        private void 复制CToolStripMenuItem_Click(object sender, EventArgs e)        {            txtBox.Copy();        }        private void 粘贴PToolStripMenuItem_Click(object sender, EventArgs e)        {            txtBox.Paste();        }        private void 删除lToolStripMenuItem_Click(object sender, EventArgs e)        {            txtBox.SelectedText = string.Empty;        }        TextBox txtInput = new TextBox()        {            Font = new Font("宋体", 10)        };        TextBox txtInputReplace = new TextBox()        {            Font = new Font("宋体", 10)        };        Label lblSearch = new Label        {            Text = "查找内容:",            Size = new Size(65, 25),            Location = new Point(5, 22)        };        Label lblDirection = new Label        {            Text = "查找方向:",            Size = new Size(65, 25),            Location = new Point(5, 58)        };        Button FindNext = new Button        {            Name = "btnFindNext",            Text = "查找下一项",            Size = new Size(80, 25),            Location = new Point(265, 15)        };        Button Cancel = new Button        {            Name = "btnCancel",            Text = "取消",            Size = new Size(80, 25),            Location = new Point(265, 50)        };        RadioButton down = new RadioButton        {            Name = "radDown",            Text = "向下",            Size = new Size(55, 25),            Location = new Point(70, 53),            Checked = true        };        RadioButton upward = new RadioButton        {            Name = "radUpward",            Text = "向上",            Size = new Size(55, 25),            Location = new Point(140, 53),            Checked = false        };        new Form FindForm = new Form        {            Text = "查找文本",            FormBorderStyle = FormBorderStyle.FixedSingle,            MaximizeBox = false,            MinimizeBox = false        };        private void 查找ToolStripMenuItem_Click(object sender, EventArgs e)        {            //显示查找对话框            txtInput.Size = new Size(190, 33);            txtInput.Location = new Point(70, 15);            txtInput.Multiline = true;            FindNext.Click += new EventHandler(Direction_Click);            //FindNext.Click += new EventHandler(Visible_Click);            Cancel.Click += new EventHandler(Cancel_Click);            FindForm.Controls.Add(lblSearch);            FindForm.Controls.Add(lblDirection);            FindForm.Controls.Add(txtInput);            FindForm.Controls.Add(down);            FindForm.Controls.Add(upward);            FindForm.Controls.Add(FindNext);            FindForm.Controls.Add(Cancel);            FindForm.Top = this.Top + 50;            FindForm.Left = this.Left + 50;            FindForm.Height = 120;            FindForm.Width = 380;            FindForm.StartPosition = FormStartPosition.CenterParent;            FindForm.ShowDialog();        }        private void Visible_Click(object sender, EventArgs e)        {            FindForm.Visible = false;        }        private void Cancel_Click(object sender, EventArgs e)        {            //关闭对话框            FindForm.Close();            ReplaceForm.Close();        }        private void Direction_Click(object sender, EventArgs e)        {            //选择字符查找方向            if (down.Checked == true)            {                Find_Click(sender, e);            }            else if (upward.Checked == true)            {                FindLast_Click(sender, e);            }        }        int nextPosition, firstPosition;        string word;        Boolean IF = false;        private void Find_Click(object sender, EventArgs e)        {            txtBox.Focus();            FindWords(txtInput.Text);        }        private void FindWords(string words)        {            //向下查找字符            if (nextPosition >= txtBox.Text.Length)                nextPosition = 0;            firstPosition = txtBox.Text.IndexOf(words, nextPosition);            if (firstPosition == -1)                nextPosition = 0;            else            {                txtBox.Select(firstPosition, words.Length);                nextPosition = firstPosition + 1;            }            word = words;            IF = true;        }        private void 查找下一个ToolStripMenuItem_Click(object sender, EventArgs e)        {            //查找下一项,如果未查找过,则显示查找对话框            down.Checked = true;            upward.Checked = false;            try            {                FindWords(word);            }            catch            {                查找ToolStripMenuItem_Click(sender, e);            }        }        private void FindLast_Click(object sender, EventArgs e)        {            txtBox.Focus();            FindWordsLast(txtInput.Text);        }        private void FindWordsLast(string words)        {            //向上查找字符            if (IF == false)                nextPosition = txtBox.Text.Length;            if (nextPosition < 0)                nextPosition = txtBox.Text.Length;            firstPosition = txtBox.Text.LastIndexOf(words, nextPosition);            if (firstPosition == -1)                nextPosition = txtBox.Text.Length;            else            {                txtBox.Select(firstPosition, words.Length);                nextPosition = firstPosition - 1;            }            word = words;            IF = true;        }        private void 查找上一个ToolStripMenuItem_Click(object sender, EventArgs e)        {            //查找上一项,如果未查找过,则显示查找对话框            upward.Checked = true;            down.Checked = false;            try            {                FindWordsLast(word);            }            catch            {                查找ToolStripMenuItem_Click(sender, e);            }        }        Label LblReplace = new Label        {            Name = "lblReplace",            Text = "替换:",            Size = new Size(55, 25),            Location = new Point(15, 50)        };        Form ReplaceForm = new Form        {            Text = "替换文本",            FormBorderStyle = FormBorderStyle.FixedSingle,            MaximizeBox = false,            MinimizeBox = false        };        private void 替换ToolStripMenuItem_Click(object sender, EventArgs e)        {            txtInput.Size = new Size(190, 30);            txtInput.Location = new Point(70, 12);            txtInput.Multiline = true;            txtInputReplace.Size = new Size(190, 30);            txtInputReplace.Location = new Point(70, 47);            txtInputReplace.Multiline = true;            Button Replace = new Button            {                Name = "btnReplace",                Text = "替换",                Size = new Size(80, 25),                Location = new Point(265, 15)            };            Replace.Click += new EventHandler(Replace_Click);            Cancel.Click += new EventHandler(Cancel_Click);            ReplaceForm.Controls.Add(lblSearch);            ReplaceForm.Controls.Add(LblReplace);            ReplaceForm.Controls.Add(txtInput);            ReplaceForm.Controls.Add(txtInputReplace);            ReplaceForm.Controls.Add(Replace);            ReplaceForm.Controls.Add(Cancel);            ReplaceForm.Top = this.Top + 50;            ReplaceForm.Left = this.Left + 50;            ReplaceForm.Height = 140;            ReplaceForm.Width = 380;            ReplaceForm.StartPosition = FormStartPosition.CenterParent;            ReplaceForm.ShowDialog();        }        private void Replace_Click(object sender, EventArgs e)        {            txtBox.Text = txtBox.Text.Replace(txtInput.Text, txtInputReplace.Text);        }        private void 全选AToolStripMenuItem_Click(object sender, EventArgs e)        {            txtBox.SelectAll();        }        private void 自动换行ToolStripMenuItem_Click(object sender, EventArgs e)        {            //默认自动换行,点击按钮打开或关闭自动换行            if (自动换行ToolStripMenuItem.Checked == true)            {                txtBox.WordWrap = false;                自动换行ToolStripMenuItem.Checked = false;            }            else            {                txtBox.WordWrap = true;                自动换行ToolStripMenuItem.Checked = true;            }        }        private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)        {            //提示用户从本地计算机安装的字体中选择字体字号            FontDialog fontDialog = new FontDialog();            if (fontDialog.ShowDialog() == DialogResult.OK)            {                txtBox.Font = fontDialog.Font;            }        }        private void Form1_SizeChanged(object sender, EventArgs e)        {            //窗体的txtBox控件随窗体改变而改变的大小            if (状态栏ToolStripMenuItem.Checked == true && 工具栏TToolStripMenuItem.Checked == true)                txtBox.Height = this.Height - menuStrip.Height - toolStrip.Height - statusStrip.Height - 39;            else if (状态栏ToolStripMenuItem.Checked == false && 工具栏TToolStripMenuItem.Checked == true)                txtBox.Height = this.Height - menuStrip.Height - toolStrip.Height - 39;            else if (状态栏ToolStripMenuItem.Checked == true && 工具栏TToolStripMenuItem.Checked == false)                txtBox.Height = this.Height - menuStrip.Height - statusStrip.Height - 39;            else                txtBox.Height = this.Height - menuStrip.Height - 39;            txtBox.Width = this.Width - 16;        }        private void 工具栏TToolStripMenuItem_Click(object sender, EventArgs e)        {            //默认打开工具栏,点击按钮打开或关闭工具栏            if (工具栏TToolStripMenuItem.Checked == true)            {                toolStrip.Visible = false;                工具栏TToolStripMenuItem.Checked = false;                txtBox.Top = 25;            }            else if (工具栏TToolStripMenuItem.Checked == false)            {                toolStrip.Visible = true;                工具栏TToolStripMenuItem.Checked = true;                txtBox.Top = 50;            }            Form1_SizeChanged(sender, e);        }        private void 放大ToolStripMenuItem_Click(object sender, EventArgs e)        {            //放大字体大小            var fontsize = txtBox.Font.Size;            var fontFamily = txtBox.Font.FontFamily;            txtBox.Font = new Font(fontFamily, fontsize + 1);        }        private void 缩小ToolStripMenuItem_Click(object sender, EventArgs e)        {            //缩小字体大小            var fontsize = txtBox.Font.Size;            var fontFamily = txtBox.Font.FontFamily;            txtBox.Font = new Font(fontFamily, fontsize - 1);        }        private void 恢复默认缩放ToolStripMenuItem_Click(object sender, EventArgs e)        {            //恢复默认字体大小            txtBox.Font = new Font(txtBox.Font.FontFamily, 11);        }        private void 状态栏ToolStripMenuItem_Click(object sender, EventArgs e)        {            //默认显示状态栏,点击按钮显示或关闭状态栏            if (状态栏ToolStripMenuItem.Checked == true)            {                statusStrip.Visible = false;                状态栏ToolStripMenuItem.Checked = false;            }            else if (状态栏ToolStripMenuItem.Checked == false)            {                statusStrip.Visible = true;                状态栏ToolStripMenuItem.Checked = true;            }            Form1_SizeChanged(sender, e);        }        //private int GetStringLen(string s)        //{        //    if (!string.IsNullOrEmpty(s))        //    {        //        int len = s.Length;        //        for (int i = 0; i < s.Length; i++)        //        {        //            if (s[i] > 255)        //                len++;        //        }        //        return len;        //    }        //    return 0;        //}        private void 查看帮助HToolStripMenuItem_Click(object sender, EventArgs e)        {            //调用系统自带的浏览器打开网页查看帮助            Process.Start("https://jingyan.baidu.com/article/a24b33cdd86a0f19fe002be9.html");        }        private void 关于记事本ToolStripMenuItem_Click(object sender, EventArgs e)        {            //关于记事本说明            Label lblTitle = new Label()            {                Text = "多功能记事本",                Size = new Size(150, 25),                Location = new Point(100, 50)            };            Label lblEdition = new Label()            {                Text = "版本号:个性测试版",                Size = new Size(150, 25),                Location = new Point(85, 100)            };            Label lblMail = new Label()            {                Text = "E-Mail:",                Size = new Size(55, 25),                Location = new Point(30, 180)            };            LinkLabel llblMail = new LinkLabel()            {                Text = "2417525822@qq.com",                Size = new Size(110, 25),                Location = new Point(85, 180)            };            Label lblCNDS = new Label()            {                Text = "CNDS博客:",                Size = new Size(65, 25),                Location = new Point(20, 220)            };            LinkLabel llblCNDS = new LinkLabel()            {                Text = "https://blog.csdn.net/UFO_Harold",                Size = new Size(200, 25),                Location = new Point(85, 220)            };            Form about = new Form            {                Text = "关于记事本",                FormBorderStyle = FormBorderStyle.FixedSingle,                MaximizeBox = false            };            llblCNDS.Click += new EventHandler(LlblCNDS_Click);            about.Controls.Add(lblTitle);            about.Controls.Add(lblEdition);            about.Controls.Add(lblMail);            about.Controls.Add(llblMail);            about.Controls.Add(lblCNDS);            about.Controls.Add(llblCNDS);            about.Top = this.Top + this.Height / 2 - about.Height / 2;            about.Left = this.Left + this.Width / 2 - about.Width / 2;            about.StartPosition = FormStartPosition.CenterParent;            about.ShowDialog();        }        private void LlblCNDS_Click(object sender, EventArgs e)        {            Process.Start("https://blog.csdn.net/UFO_Harold");        }        private void 新建toolStripButton_Click(object sender, EventArgs e)        {            新建NToolStripMenuItem_Click(this, e);        }        private void 另存为toolStripButton_Click(object sender, EventArgs e)        {            另存为ToolStripMenuItem_Click(this, e);        }        private void 保存StoolStripButton_Click(object sender, EventArgs e)        {            保存SToolStripMenuItem_Click(this, e);        }        private void 打印PtoolStripButton_Click(object sender, EventArgs e)        {            打印PToolStripMenuItem_Click(this, e);        }        private void 剪切toolStripButton_Click(object sender, EventArgs e)        {            剪切ToolStripMenuItem_Click(this, e);        }        private void 复制CtoolStripButton_Click(object sender, EventArgs e)        {            复制CToolStripMenuItem_Click(this, e);        }        private void 粘贴PtoolStripButton_Click(object sender, EventArgs e)        {            粘贴PToolStripMenuItem_Click(this, e);        }        private void 帮助HtoolStripButton_Click(object sender, EventArgs e)        {            查看帮助HToolStripMenuItem_Click(this, e);        }        private void Timer_Tick(object sender, EventArgs e)        {            //显示编辑光标所在几行几列            int row = txtBox.GetLineFromCharIndex(txtBox.SelectionStart) + 1;            int col = (txtBox.SelectionStart - txtBox.GetFirstCharIndexFromLine(txtBox.GetLineFromCharIndex(txtBox.SelectionStart))) + 1;            toolStripStatusLblLocation.Text = "第 " + row + " 行, 第 " + col + " 列";            toolStripStatusLblNow.Text = "" + DateTime.Now.ToLocalTime();        }        private void Form1_FormClosing(object sender, FormClosingEventArgs e)        {            //关闭窗体时如果已修改内容,则弹出是否保存对话框,否则直接关闭窗体            if (txtBox.Modified == true)            {                DialogResult dr = MessageBox.Show("文件发生变化,是否更改保存?", "注意", MessageBoxButtons.YesNoCancel);                if (dr == DialogResult.Yes)                {                    保存SToolStripMenuItem_Click(sender, e);                    return;                }                else if (dr == DialogResult.No)                {                    return;                }                else if (dr == DialogResult.Cancel)                {                    e.Cancel = true;                }            }        }    }}

运行结果

注:

  1. 控件请自行改名,也可使用默认控件名,此次程序的控件均已自定义名称,然后再双击控件便会自动创建控件的函数并跳到代码页,全数copy代码到自己新建的程序可能运行不起来;

  2. 查找上一项下一项功能混用时会有一些bug,达不到预期效果,但能运行,不会报错,目前没有想到解决方法,大家可自行摸索,如有可以改进的地方可联系博主;

  3. 整个项目的压缩文件:蓝奏云:https://www.lanzous.com/i9r643e(如需使用请安装.NET Framework 4.7.2框架,且图标可能因文件路径不同而无法显示,修改文件路径即可)
    百度网盘链接:https://pan.baidu.com/s/1d0J3YHEgx4xnFoHkDYfa5A

该文是从CSND搬家过来的文章,觉得CSND不好用,搬至博客园在此安家,总的来说,在博客园的体验感比在CSDN好很多,往后请各位博友多多指教!我的博客园地址:https://www.cnblogs.com/Harold-popo

  • 状态栏图标设置

  • 项目文件目录

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
客户管理主窗体
系统托盘NotifyIcon控件
C#获取本地磁盘目录源代码
C# MDI窗体
Windows系统中使用C#编写蓝牙通信程序的简单实例
C#Winfrom系统打印机调用/设置默认打印机
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服