c#实现记事本

复制代码
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 Notepad
{
    public partial class frmNotepad : Form
    {   
        //***********************************************************************
        /*布尔变量b用于判断文件是新建的还是从磁盘打开的 true 表示从磁盘打开,false表示文件是新建的,默认值为false*/
        bool b = false;
        /*布尔变量s用于判断文件是否被保存 true 表示已经被保存,false表示未被保存,默认值为true*/
        bool s = true;
        //***********************************************************************

        public frmNotepad()
        {
            InitializeComponent();
            richTextBox1.Text = "";
        }

        //************************************************************************* 
        // 多格式文本框的TextChanged事件代码  
        //************************************************************************* 
        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {
            //文本框被修改后,设置s为false,表示文件未保存
            s = false;
        }


        //************************************************************************* 
        // 【文件】菜单各菜单项的单击代码  
        //************************************************************************* 
        //************************************************************************* 
        // 【新建】菜单代码  
        //*************************************************************************
        private void 新建NToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //判断当前文件是否是从磁盘打开,或者新建时文档不为空,并且文件未被保存
            if(b == true || richTextBox1.Text.Trim() != "")
            {
                //若文件未保存
                if(s == false)
                {
                    string result;
                    result = MessageBox.Show("文件尚未保存,是否保存?", "保存文件", MessageBoxButtons.YesNoCancel).ToString();
                    switch(result)
                    {
                        case"Yes":
                            //若文件是从磁盘打开的
                            if(b == true)
                            {
                                //按文件打开的路径保存文件
                                richTextBox1.SaveFile(sdlgNotepad.FileName);
                            }else if(sdlgNotepad.ShowDialog()==DialogResult.OK)
                            {
                                richTextBox1.SaveFile(sdlgNotepad.FileName);
                            }
                            s = true;
                            richTextBox1.Text = "";
                            break;
                        case"No":
                            b = false;
                            richTextBox1.Text = "";
                            break;
                    }
                }
            }
        }

        //************************************************************************* 
        // 【保存】菜单代码 
        //*************************************************************************
        private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //若文件从磁盘打开并且修改了其中内容
            if(b == true && richTextBox1.Modified == true)
            {
                richTextBox1.SaveFile(odlgNotepad.FileName);
                s = true;
            }
            else if(b == false && richTextBox1.Text.Trim() != "" &&sdlgNotepad.ShowDialog() == DialogResult.OK)
            {
                //保存文件
                richTextBox1.SaveFile(sdlgNotepad.FileName);
                s = true;
                b = true;
                odlgNotepad.FileName = sdlgNotepad.FileName;
            }
        }

        //************************************************************************* 
        // 【打开】菜单代码  
        //************************************************************************* 
        private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)
        {
             //判断当前文件是否是从磁盘打开,或者新建时文档不为空,并且文件未被保存
            try
            {
                if (b == true || richTextBox1.Text.Trim() != "")
                {
                    if (s == false)
                    {
                        string result;
                        result = MessageBox.Show("文件尚未保存,是否保存?", "保存文件", MessageBoxButtons.YesNoCancel).ToString();
                        switch (result)
                        {
                            case "Yes":
                                //若文件是从磁盘打开的
                                if (b == true)
                                {
                                    //按文件打开的路径保存文件
                                    richTextBox1.SaveFile(sdlgNotepad.FileName);
                                }
                                else if (sdlgNotepad.ShowDialog() == DialogResult.OK)
                                {
                                    richTextBox1.SaveFile(sdlgNotepad.FileName);
                                }
                                s = true;
                                richTextBox1.Text = "";
                                break;
                            case "No":
                                b = false;
                                richTextBox1.Text = "";
                                break;
                        }
                    }
                }
                odlgNotepad.RestoreDirectory = true;
                if ((odlgNotepad.ShowDialog() == DialogResult.OK) && odlgNotepad.FileName != "")
                {
                    //打开文件
                    richTextBox1.LoadFile(odlgNotepad.FileName);
                    b = true;
                }
                s = true;
            }
            catch(Exception ex)
            {
                    
            }

        }

        //************************************************************************* 
        // 【另存为】菜单代码  
        //************************************************************************* 
        private void 另存为AToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if(sdlgNotepad.ShowDialog() == DialogResult.OK)
            {
                richTextBox1.SaveFile(sdlgNotepad.FileName);
                s = true;
            }
        }

        //************************************************************************* 
        // 【退出】菜单代码  
        //*************************************************************************
        private void 退出XToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //结束程序运行
            Application.Exit();
        }

        //************************************************************************* 
        // 【编辑】菜单各菜单项的单击代码  
        //************************************************************************* 
        // 【撤销】菜单代码 
        private void 撤消UToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //撤销操作
            richTextBox1.Undo();
        }

        // 【复制】菜单代码
        private void 复制CToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //复制
            richTextBox1.Copy();
        }

        // 【剪切】菜单代码
        private void 剪切TToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //剪切
            richTextBox1.Cut();
        }

        // 【粘贴】菜单代码
        private void 粘贴PToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //粘贴
            richTextBox1.Paste();
        }

        // 【全选】菜单代码
        private void 全选AToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //全选
            richTextBox1.SelectAll();
        }

        //************************************************************************* 
        // 【格式】菜单代码  
        //************************************************************************* 
        private void 工具TToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        // 【自动换行】菜单代码
        private void 自定义CToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if(自定义CToolStripMenuItem.Checked == false)
            {
                //选中自动换行
                自定义CToolStripMenuItem.Checked = true;
                //设置为自动换行
                richTextBox1.WordWrap = true;
            }
            else
            {
                //未选中自动换行
                自定义CToolStripMenuItem.Checked = false;
                //设置为不自动换行
                richTextBox1.WordWrap = false;
            }
        }

        // 【字体】菜单代码
        private void 选项OToolStripMenuItem_Click(object sender, EventArgs e)
        {
            fdlgNotepad.ShowColor = true;
            if(fdlgNotepad.ShowDialog() == DialogResult.OK)
            {
                richTextBox1.SelectionColor = fdlgNotepad.Color;
                richTextBox1.SelectionFont = fdlgNotepad.Font;
            }
        }

        //************************************************************************* 
        // 【帮助】菜单代码  
        //*************************************************************************
        // 【关于】菜单代码
        private void 关于AToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("wky  编写", "关于\"记事本\"", MessageBoxButtons.OK);
        }

        //************************************************************************* 
        // 计时器控件的Tick事件代码  
        //*************************************************************************
        private void tmrNotepad_Tick(object sender, EventArgs e)
        {
            //获取系统当前时间,并显示在状态栏中
            tssLbl2.Text = System.DateTime.Now.ToString();
        }

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

        

    }
}
复制代码

posted @ 2017-11-23 14:13  维尼熊320  阅读(472)  评论(0编辑  收藏  举报