C#编写简单的记事本

   用C#编写记事本首先要引用与文件读写有关的命名空间using System.IO;
 记事本的撤销,复制,粘贴,剪切,删除,字体,颜色等实现起来比较简单,只要几句代码:
     private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (textBox1.SelectionLength != 0)
            {
                textBox1.Cut();
            }

        }

       private void 复制CToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (textBox1.SelectionLength != 0)
            {
                textBox1.Copy();
            }
        }

    private void 粘贴PToolStripMenuItem_Click(object sender, EventArgs e)
        {
           if(Clipboard.GetText().ToString() != "") //剪贴板里有文本
             
                textBox1.Paste();
            }


        }

        private void 撤销ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (textBox1.CanUndo == true)  //文本可以撤销
            {
                textBox1.Undo();
                textBox1.ClearUndo();    //消除最近的撤销信息
            }
        }

        private void 全选ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != string.Empty)
            {
                textBox1.SelectAll();
            }
        }
        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (textBox1.SelectedText != string.Empty)
            {
                textBox1.SelectedText = string.Empty;
            }
        }
  private void 时间日期ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            textBox1.Text =textBox1.Text + DateTime.Now.ToString();
        }
     private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (fontDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox1.Font = fontDialog1.Font;
               
            }
        }

        private void 颜色ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox1.ForeColor = colorDialog1.Color;
            }
        }
   private void 自动换行ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (自动换行ToolStripMenuItem.Checked == true)//如果选中了自动换行
            {
                textBox1.WordWrap = true; //文本就可以换行(前提是有水平垂直滚动条)
             
            }
            else
            {
                textBox1.WordWrap = false;
              
            }
        }
    private void 编辑EToolStripMenuItem_DropDownOpened(object sender, EventArgs e) //当单击编辑打开时,判断各项能不能使用
        {
            if (textBox1.Modified == false)
            {
                撤销ToolStripMenuItem.Enabled = false;
            }
            else
            {
                撤销ToolStripMenuItem.Enabled = true;
            }
            if (textBox1.SelectedText == "")
            {
                剪切ToolStripMenuItem.Enabled = false;
                复制CToolStripMenuItem.Enabled = false;
                删除ToolStripMenuItem.Enabled = false;
            }
            else
            {
                剪切ToolStripMenuItem.Enabled = true;
                复制CToolStripMenuItem.Enabled = true;
                删除ToolStripMenuItem.Enabled = true;
            }
            if (textBox1.Text == "")
            {
                查找ToolStripMenuItem.Enabled = false;
                替换ToolStripMenuItem.Enabled = false;
            }
            else
            {
                查找ToolStripMenuItem.Enabled = true;
                替换ToolStripMenuItem.Enabled = true;
            }
            if (Clipboard.GetText().ToString() == "")
            {
                粘贴PToolStripMenuItem.Enabled = false;
            }
            else
            {
                粘贴PToolStripMenuItem.Enabled = true;
            }
        }
    private void 另存为AToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (this.saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                StreamWriter writer = new StreamWriter(saveFileDialog1.FileName, true, System.Text.Encoding.Default);
                writer.Write(textBox1.Text);
                writer.Close();
                textBox1.Modified = false;
            }
        }//另存为直接打开保存对话框,创建流写入对象(其构造函数参数一是保存路径及文件名,二是是否覆盖原文件,三是一本系统默认的字符编码保存),用流写入对象的write方法(要被写入保存的文本),最后关闭流写入对象。将文本的是否变动设为false,这样再关闭或保存时不会提示要求保存了。
     private void 打开OToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                this.Text = openFileDialog1.SafeFileName + "-记事本";                  //safeFileName为文件名不加路径
                StreamReader reader = new StreamReader(openFileDialog1.FileName,System.Text.Encoding.Default);
                textBox1.Text = reader.ReadToEnd();
                this.Filename = openFileDialog1.FileName;  //给公共字符串字段赋值用于保存时判断文件名是否存在
                reader.Close();
            }
        }//打开创建的流读取对象,与流写入对象差不多。其中Filename是在类下面声明的值为""的字符串公共变量,在打开文本时就被文件路径及名称赋值,用于在以后保存文件时自动保存,而不是打开保存对话框保存。
    private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (this.Filename ==string.Empty) //判断文件是否存在
            {
     //不存在就打开对话框保存,把用户单击对话框按钮时返回的值赋给枚举类的DialogResult变量result。
                DialogResult result = saveFileDialog1.ShowDialog();
    如果result值为DialogResult.Cancel,说明用户单击了取消按钮,则什么也不处理.
                if (result == DialogResult.Cancel)
                {
                    textBox1.Text = textBox1.Text;
                }
                else
                {
                    StreamWriter writer = new StreamWriter(saveFileDialog1.FileName, true, ASCIIEncoding.Default);
                    writer.Write(textBox1.Text);
                    writer.Close();
                    textBox1.Modified = false;
                }
            }
            else
            {
                StreamWriter writer = new StreamWriter(this.Filename, true, ASCIIEncoding.Default);
                writer.Write(textBox1.Text);
                writer.Close();
                textBox1.Modified = false;
            }
        }
    //新建是保存跟另存为的结合体
    private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (textBox1.Modified==true)
            {
                DialogResult result = MessageBox.Show("文本发生了改变,要保存吗?", "注意", MessageBoxButtons.YesNoCancel);
                if (result ==DialogResult.Yes)
                {
                    if (this.Filename == "")
                    {
                        DialogResult bresult = saveFileDialog1.ShowDialog();
                        if (bresult == DialogResult.Cancel)
                        {
                            textBox1.Text = textBox1.Text;
                        }
                        else
                        {
                            saveFileDialog1.ShowDialog();
                            StreamWriter writer = new StreamWriter(saveFileDialog1.FileName, true, ASCIIEncoding.Default);
                            writer.Write(textBox1.Text);
                            writer.Close();
                            textBox1.Modified = false;
                        }
                    }
                    else
                    {
                        StreamWriter writer = new StreamWriter(this.Filename, true, ASCIIEncoding.Default);
                        writer.Write(textBox1.Text);
                        writer.Close();
                        textBox1.Modified = false;
                    }

                }
                else if (result == DialogResult.No)
                {
                    textBox1.Clear();
                }
                else
                {
                    textBox1.Text=textBox1.Text;
                }
              
             
            }
            else
            {
              
                textBox1.Clear();

            }

        }
  给记事本的菜单栏里的功能加快捷键(属性shortcutkeys)
一下是查找替换的代码form5为查找替换窗口,form3为记事本窗口

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 数据库编程基础
{
    public partial class Form5 : Form
    {
        public string chazhaowenben; //接受来自记事本里的文本
        public int index;
        public int lastindex;
        public int guangbiaowenzhi;
        public string jishibenwenben;
        public Form5()
        {
            InitializeComponent();
        }


        private void btchazhao_Click(object sender, EventArgs e)
        {
            Form3 form3 = (Form3)this.Owner;

            jishibenwenben = form3.str;
            chazhaowenben = chazhao.Text;
            if (xiangqian.Checked == true)
            {
                if (xufendaxiaoxie.Checked == true)
                {
                    index = jishibenwenben.IndexOf(chazhaowenben,form3.guangbiao /*guangbiaowenzhi*/);
                }
                else
                {
                    index = jishibenwenben.IndexOf(chazhaowenben, form3.guangbiao /*guangbiaowenzhi*/, StringComparison.CurrentCultureIgnoreCase);
                }
                if (index == -1)
                {
                    MessageBox.Show(string.Format("查不到/"{0}/"或已经到文件尾", chazhaowenben));
                }
                else
                {
                    form3.textBox1.Select(index, chazhaowenben.Length);
                    form3.textBox1.Focus();
                    form3.guangbiao /*guangbiaowenzhi*/ = index + chazhaowenben.Length;
                }
            }
            else
            {
                if (xufendaxiaoxie.Checked == true)
                {
                    lastindex = jishibenwenben.LastIndexOf(chazhaowenben, form3.guangbiao /*guangbiaowenzhi*/);
                }
                else
                {
                    lastindex = jishibenwenben.LastIndexOf(chazhaowenben, form3.guangbiao /*guangbiaowenzhi*/, StringComparison.CurrentCultureIgnoreCase);
                }
                if (lastindex == -1)
                {
                    MessageBox.Show(string.Format("查不到/"{0}/"或已经到文件头", chazhaowenben));
                }
                else
                {
                    form3.textBox1.Select(lastindex, chazhaowenben.Length);
                    form3.textBox1.Focus();
                    form3.guangbiao/*guangbiaowenzhi*/ = lastindex - 1;
                    if (form3.guangbiao < 0)
                    {
                        form3.guangbiao = lastindex-1;
                        MessageBox.Show(string.Format("查不到/"{0}/"或已经到文件头", chazhaowenben));
                    }
                }
            }
        }
    

        private void chazhao_TextChanged(object sender, EventArgs e)
        {
            if (this.chazhao.Text == "")
            {
                btchazhao.Enabled = false;
                bttihuan.Enabled = false;
            }
            else
            {
                btchazhao.Enabled = true;
                bttihuan.Enabled = true;
            }
        }

        private void Form5_Load(object sender, EventArgs e)
        {
            this.label4.Text = "0";
            if (this.chazhao.Text == "")
            {
                btchazhao.Enabled = false;
                bttihuan.Enabled = false;
            }
            else
            {
                btchazhao.Enabled = true;
                bttihuan.Enabled = true;
            }
        }

        private void btquxiao_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form3 form3 = (Form3)this.Owner;  
            //guangbiaowenzhi = form3.guangbiao;
            //this.label4.Text = guangbiaowenzhi.ToString();
            this.label4.Text =Convert.ToString(form3.guangbiao);
        }

        private void bttihuan_Click(object sender, EventArgs e)
        {
            Form3 form3 = (Form3)this.Owner;
            form3.textBox1.SelectedText = this.tihuan.Text;
            form3.textBox1.Modified = true;
        }

     
      
    }
}

     只有查找替换必须的代码
 public partial class Form3 : Form
    {
        private string Filename="";
      
        public string str; //用于存储记事本里的文本
        public int guangbiao; //用于存储光标位置

         private void 查找替换ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form5 form5 = new Form5();
            form5.Owner = this;
            str = this.textBox1.Text;
            //guangbiao = this.textBox1.SelectionStart;
            //form5.guangbiaowenzhi = this.textBox1.SelectionStart;
            form5.Show();
        }

        private void textBox1_Click(object sender, EventArgs e)
        {
           // Form5 form5 = new Form5();
           // form5.Owner = this;
            str = this.textBox1.Text;
            //guangbiao = this.textBox1.SelectionStart;
           // form5.guangbiaowenzhi = this.textBox1.SelectionStart;
            this.guangbiao = this.textBox1.SelectionStart;
        }

     

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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; using System.IO; namespace Mickey记事本 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // 用于存储当前操作的文件的名称 private string textFileName = ""; private string filePath = ""; private void 新建_Click(object sender, EventArgs e) { textFileName = ""; // 新建一个文本时,若输入框中的内容不为空,应先提示“是否保存” if (inputInfo.Text != string.Empty) { // 若用户选择“是”,应弹出保存文件的对话框 if (MessageBox.Show("是否保存当前文件?", "Mickey温馨提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information) == DialogResult.Yes) { // 保存文件 Save(); Text = "新建-Mickey记事本"; inputInfo.Text = ""; } else if (MessageBox.Show("是否保存当前文件?", "Mickey温馨提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information) == DialogResult.No) { // 用户选择不保存时将输入框中的内容清除 inputInfo.Text = ""; } } } private void 打开_Click(object sender, EventArgs e) { OpenFileDialog openFile = new OpenFileDialog(); openFile.Filter = "文本文件(*.txt)|*.txt"; if (openFile.ShowDialog() == DialogResult.OK) { StreamReader sr = new StreamReader(openFile.FileName); inputInfo.Text = sr.ReadToEnd(); sr.Close(); FileInfo fileInfo = new FileInfo(openFile.FileName); // 把标题改为打开的文件的名称 Text = "*" + fileInfo.Name + "-Mickey记事本"; textFileName = fileInfo.Name; } } private void 保存_Click(object sender, EventArgs e) { Save(); } // “保存” private void Save() { if (!textFileName.Equals("")) { SaveFileDialog saveFile = new SaveFileDialog(); // 默认保存格式 saveFile.Filter = "文本文件(*.txt)|*.txt"; StreamWriter sw = new StreamWriter(filePath, false); sw.Write(inputInfo.Text); sw.Close(); MessageBox.Show("文件保存成功!", "Mickey温馨提示"); filePath = saveFile.FileName; // 把标题改为打开的文件的名称 Text = textFileName + "-Mickey记事本"; } else { // 成员变量为“”,说明文件第一次保存,执行“另存为”操作 HoldFile(); } } private void HoldFile() { // 若用户选择另保存文件 SaveFileDialog saveFile = new SaveFileDialog(); // 默认保存格式 saveFile.Filter = "文本文件(*.txt)|*.txt"; if (saveFile.ShowDialog() == DialogResult.OK) { StreamWriter sw = new StreamWriter(saveFile.FileName, false); sw.WriteLine(inputInfo.Text); sw.Close(); MessageBox.Show("文件保存成功!", "Mickey温馨提示"); filePath = saveFile.FileName; } // 判断是第一次保存还是第二次 if (textFileName.Equals("")) { FileInfo fileInfo = new FileInfo(saveFile.FileName); Text = fileInfo.Name + "-Mickey记事本"; textFileName = fileInfo.Name; } else { // 把标题改为打开的文件的名称 Text = textFileName + "-Mickey记事本"; } } private void 另存为_Click(object sender, EventArgs e) { HoldFile(); } private void 页面设置_Click(object sender, EventArgs e) { this.pageSetupDialog1.Document = this.printDocument1; pageSetupDialog1.ShowDialog(); } private void 打印_Click(object sender, EventArgs e) { if (inputInfo.Text.Length < 1) { MessageBox.Show("请确保要打印的文件的内容不为空!", "Mickey温馨提示"); return; } else { // 设置Document的属性 this.printDialog1.Document = this.printDocument1; this.printDialog1.PrinterSettings = this.pageSetupDialog1.PrinterSettings; if (this.printDialog1.ShowDialog() == DialogResult.OK) { try { this.printDocument1.Print(); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } private void 退出_Click(object sender, EventArgs e) { // 退出时应提示用户是否保存当前文本文件 DialogResult result = MessageBox.Show("是否将更改保存?", "Mickey温馨提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information); if (result == DialogResult.Yes) { Save(); Application.Exit(); } else if (result == DialogResult.No) { Application.Exit(); } } // 这个成员变量用来存储用户选择进行操作的字符串 private string selectedInfo = ""; private void 编辑_Click(object sender, EventArgs e) { if ((inputInfo.SelectedText.Equals("")) && (selectedInfo.Equals(""))) { 剪切.Enabled = false; 复制.Enabled = false; 粘贴.Enabled = false; 删除.Enabled = false; } else { 剪切.Enabled = true; 复制.Enabled = true; 粘贴.Enabled = true; 删除.Enabled = true; } } private void 撤销_Click(object sender, EventArgs e) { this.inputInfo.Undo(); } private void 剪切_Click(object sender, EventArgs e) { selectedInfo = inputInfo.SelectedText; this.inputInfo.Cut(); } private void 复制_Click(object sender, EventArgs e) { this.inputInfo.Copy(); } private void 粘贴_Click(object sender, EventArgs e) { this.inputInfo.Paste(); } private void 删除_Click(object sender, EventArgs e) { this.inputInfo.SelectedText = ""; } private void 查找_Click(object sender, EventArgs e) { if (inputInfo.Text == string.Empty) { MessageBox.Show("请确保要查找的文件的内容不为空!", "Mickey温馨提示"); } else { //Form2 fr2 = new Form2(); //fr2.sender(this); //fr2.Show(); } } private void 查找下一个_Click(object sender, EventArgs e) { } private void 全选_Click(object sender, EventArgs e) { this.inputInfo.SelectAll(); //全选_Click(sender,e); } private void 时间日期_Click(object sender, EventArgs e) { inputInfo.Text += "现在时间是:" + DateTime.Now.ToString(); } private void 自动换行_Click(object sender, EventArgs e) { if (自动换行.Checked == true) { inputInfo.WordWrap = true; } else { inputInfo.WordWrap = false; } } private void 字体_Click(object sender, EventArgs e) { FontDialog fontDialog = new FontDialog(); if (fontDialog.ShowDialog() == DialogResult.OK) { inputInfo.Font = fontDialog.Font; } } private void 查看_Click(object sender, EventArgs e) { if (inputInfo.Text.Length > 0) { 状态栏.Enabled = true; } else { 状态栏.Enabled = false; } } private void 状态栏_Click(object sender, EventArgs e) { if (状态栏.Checked == true) { 状态栏.Checked = false; statusStrip1.Visible = false; } else { 状态栏.Checked = true; statusStrip1.Visible = true; } } private void 查看帮助_Click(object sender, EventArgs e) { string help = @"C:\Users\狗狗Mickey\Desktop\help.txt"; Help.ShowHelp(this, help); } private void 关于记事本_Click(object sender, EventArgs e) { AboutBox1 about = new AboutBox1(); about.Show(); } } }
以下是C# WinForm中编写一个简单记事本的示例代码: 首先,在你的WinForm中添加以下控件: - 一个MenuStrip控件,用于添加文件菜单、编辑菜单和帮助菜单。 - 一个RichTextBox控件,用于输入和显示文本内容。 接下来,添加以下代码来处理菜单项单击事件: ```csharp // 文件菜单 private void newToolStripMenuItem_Click(object sender, EventArgs e) { // 新建文件 richTextBox1.Text = ""; } private void openToolStripMenuItem_Click(object sender, EventArgs e) { // 打开文件 OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"; if (openFileDialog.ShowDialog() == DialogResult.OK) { string filePath = openFileDialog.FileName; richTextBox1.LoadFile(filePath, RichTextBoxStreamType.PlainText); } } private void saveToolStripMenuItem_Click(object sender, EventArgs e) { // 保存文件 SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { string filePath = saveFileDialog.FileName; richTextBox1.SaveFile(filePath, RichTextBoxStreamType.PlainText); } } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { // 退出应用 Application.Exit(); } // 编辑菜单 private void cutToolStripMenuItem_Click(object sender, EventArgs e) { // 剪切 richTextBox1.Cut(); } private void copyToolStripMenuItem_Click(object sender, EventArgs e) { // 复制 richTextBox1.Copy(); } private void pasteToolStripMenuItem_Click(object sender, EventArgs e) { // 粘贴 richTextBox1.Paste(); } private void selectAllToolStripMenuItem_Click(object sender, EventArgs e) { // 全选 richTextBox1.SelectAll(); } // 帮助菜单 private void aboutToolStripMenuItem_Click(object sender, EventArgs e) { // 关于 MessageBox.Show("简单记事本 v1.0", "关于"); } ``` 最后,添加以下代码来处理窗体加载事件: ```csharp private void Form1_Load(object sender, EventArgs e) { // 设置窗体标题 this.Text = "简单记事本"; // 设置RichTextBox控件的字体和大小 richTextBox1.Font = new Font("Consolas", 12); } ``` 这样,你就可以编写一个简单记事本应用了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值