用編寫一個簡單的記事本(C#實現)
阿新 • • 發佈:2018-11-16
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(); } } }