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(); } } }