c#编写的记事本

本文介绍了一个简易记事本程序的设计与实现细节,包括文件的新建、打开、保存等功能,以及撤销、复制、粘贴等常用编辑操作。此外,还实现了字体设置、自动换行等增强功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Notepad
{
    public partial class frmNotepad : Form
    {
        //布尔变量b是用于判断文件是新建还是从磁盘打开 false 是新建 true是打开
        private bool b = false;
        //s是判断文件是否保存 false是没有保存
        private bool s = false ;
        public frmNotepad()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        //新建文件
        private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
       {
            if (s == true)
            {
                DialogResult result = MessageBox.Show("文本内容已经改变,需要保存吗?", "保存文本", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

                switch (result)
                {
                    case DialogResult.Yes:
                        {
                            保存SCtrlSToolStripMenuItem_Click(sender, e);
                            rchShow.Clear();
                            this.Text = "编辑文本...新建文本";
                            s   = false;
                            break;
                        }
                    case DialogResult.No:
                        {
                            rchShow.Clear();
                            this.Text = "编辑文本...新建文本";
                            s  = false;
                            break;
                        }
                    case DialogResult.Cancel:
                        {
                            break;
                        }
                }
            }
            else
            {
                rchShow.Clear();
                this.Text = "编辑文本...新建文本";
            }

        }


        //打开文件
        private void 打开OCtrlOToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (b == true || rchShow.Text.Trim() != "")
            {
                if (s == false)
                {
                    string result;
                    result = MessageBox.Show("文件未保存,是否保存", "保存文件", MessageBoxButtons.YesNoCancel).ToString();
                    switch (result)
                    {
                        case "Yes":
                            if (b == true)
                            {
                                rchShow.SaveFile(odlgNotepad.FileName);
                            }
                            else if (odlgNotepad.ShowDialog() == DialogResult.OK)
                            {
                                rchShow.SaveFile(sdlgNotepad.FileName);
                            }
                            s = true;
                            break;
                        case "No":
                            b = false;
                            rchShow.Text = "";
                            break;
                    }
                }
            }
            odlgNotepad.RestoreDirectory = true;
            if (odlgNotepad.ShowDialog() == DialogResult.OK && odlgNotepad.FileName != "")
            {
                rchShow.LoadFile(odlgNotepad.FileName, RichTextBoxStreamType.PlainText);
                b = true;
            }
            s = true;
        }
 

  private void 保存SCtrlSToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //若文件在磁盘中打开或者修改
            if (b == true && rchShow.Modified == true)
            {
                rchShow.SaveFile(odlgNotepad.FileName, RichTextBoxStreamType.PlainText);
                s = true;
            }
            else if (b == false && rchShow.Text.Trim() != "" && sdlgNotepad.ShowDialog() == DialogResult.OK)
            {
                rchShow.SaveFile(sdlgNotepad.FileName, RichTextBoxStreamType.PlainText);
                s = true;
                b = true;
                odlgNotepad.FileName = sdlgNotepad.FileName;
            }

          
        }

        private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e)
        {

            try
            {
                //SaveFileDialog sd = new SaveFileDialog();
                if (sdlgNotepad.ShowDialog()==DialogResult.OK)
                {
                    this.rchShow.SaveFile(sdlgNotepad.FileName, RichTextBoxStreamType.PlainText);
                    s = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //菜单项退出代码
        private void 退出EToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

     
        //撤销
        private void 撤销ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            rchShow.Undo();
        }
        //复制
        private void 复制CtrlCToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (rchShow.SelectedText.Length > 0)
                rchShow.Copy();
        }

      
        //剪切
        private void 剪切XToolStripMenuItem_Click(object sender, EventArgs e)
        {
            rchShow.Cut();
        }
      
        //粘贴
        private void 粘贴CtrlVToolStripMenuItem_Click(object sender, EventArgs e)
        {
            rchShow.Paste();
        }

        //显示时间
        private void 时间ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            rchShow.Text += DateTime.Now.ToString();
        }

        //全选
        private void 全选ACtrlAToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            rchShow.SelectAll();
        }

        //自动换行
        private void 自动换行ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (自动换行ToolStripMenuItem.Checked == false)
            {
                自动换行ToolStripMenuItem.Checked = true;
                rchShow.WordWrap = true;
            }
            else
            {
                自动换行ToolStripMenuItem.Checked = false;
                rchShow.WordWrap = false;
            }
        }

        //字体
        private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            fdlgNotepad.ShowColor = true;
            fdlgNotepad.ShowEffects = true;
            fdlgNotepad.AllowVerticalFonts = true;
            fdlgNotepad.AllowScriptChange = true;
            if (fdlgNotepad.ShowDialog() == DialogResult.OK)
            {
                rchShow.SelectionColor = fdlgNotepad.Color;
                rchShow.SelectionFont = fdlgNotepad.Font;
            }
        }

        //关于记事本
        private void 关于记事本ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmAbout of_About = new frmAbout();
            of_About.ShowDialog();
        }

        private void tmrNotepad_Tick(object sender, EventArgs e)
        {
            label1.Text = System.DateTime.Now.ToString();
        }

        private void fdlgNotepad_Apply(object sender, EventArgs e)
        {
            fdlgNotepad.ShowColor = true;
            fdlgNotepad.AllowScriptChange = true;
            fdlgNotepad.AllowVerticalFonts = true;
            fdlgNotepad.ShowEffects = true;
            if (fdlgNotepad.ShowDialog() == DialogResult.OK)
            {
                rchShow.Font = fdlgNotepad.Font;
                rchShow.ForeColor = fdlgNotepad.Color;
            }
        }

        //右键菜单
        private void copyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (rchShow.SelectedText.Length > 0)
                rchShow.Copy();
        }

        private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            rchShow.Paste();
        }

        private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            rchShow.Cut();
        }

        private void 撤销ToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            rchShow.Undo();
        }

        private void 全选ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            rchShow.SelectAll();
        }      
    }
}

 

### 如何使用 C# WinForms 创建记事本程序 创建一个简单的记事本应用程序可以通过 C# WinForms 实现。以下是一个基本的示例代码,展示了如何实现记事本的核心功能,例如打开、保存和编辑文本文件。 ```csharp using System; using System.IO; using System.Windows.Forms; namespace NotepadApp { public partial class Form1 : Form { private string currentFile = ""; public Form1() { InitializeComponent(); } private void openToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == DialogResult.OK) { currentFile = openFileDialog.FileName; richTextBox1.Text = File.ReadAllText(currentFile); } } private void saveToolStripMenuItem_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(currentFile)) { SaveFileDialog saveFileDialog = new SaveFileDialog(); if (saveFileDialog.ShowDialog() == DialogResult.OK) { currentFile = saveFileDialog.FileName; } } if (!string.IsNullOrEmpty(currentFile)) { File.WriteAllText(currentFile, richTextBox1.Text); } } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } } } ``` 在上述代码中,`richTextBox1` 是一个用于显示和编辑文本的控件[^4]。`OpenFileDialog` 和 `SaveFileDialog` 用于处理文件的打开和保存操作[^5]。 ### 界面设计 在 Visual Studio 中创建一个新的 WinForms 应用程序项目,并将以下控件添加到窗体中: - **MenuStrip**: 添加菜单项(如“文件”、“编辑”等)。 - **RichTextBox**: 用于显示和编辑文本。 - **ToolStrip** 或 **StatusStrip**: 可选,用于显示状态信息或其他工具。 通过拖放控件并设置其属性,可以轻松构建用户界面[^6]。 ### 扩展功能 为了使记事本更加完善,可以添加以下功能: - **查找和替换**: 使用对话框实现查找和替换功能。 - **字体设置**: 允许用户更改文本的字体和颜色。 - **打印支持**: 添加打印功能以允许用户打印文档。 这些功能可以通过调用 Windows API 或使用 .NET Framework 提供的类库来实现[^7]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值