用編寫一個簡單的記事本(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();
        }

        

    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章