【转载】用C#编写一个简单的记事本
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 11 12 namespace Notepad 13 { 14 public partial class frmNotepad : Form 15 { 16 //*********************************************************************** 17 /*布尔变量b用于判断文件是新建的还是从磁盘打开的 true 表示从磁盘打开,false表示文件是新建的,默认值为false*/ 18 bool b = false; 19 /*布尔变量s用于判断文件是否被保存 true 表示已经被保存,false表示未被保存,默认值为true*/ 20 bool s = true; 21 //*********************************************************************** 22 23 public frmNotepad() 24 { 25 InitializeComponent(); 26 richTextBox1.Text = ""; 27 } 28 29 //************************************************************************* 30 // 多格式文本框的TextChanged事件代码 31 //************************************************************************* 32 private void richTextBox1_TextChanged(object sender, EventArgs e) 33 { 34 //文本框被修改后,设置s为false,表示文件未保存 35 s = false; 36 } 37 38 39 //************************************************************************* 40 // 【文件】菜单各菜单项的单击代码 41 //************************************************************************* 42 //************************************************************************* 43 // 【新建】菜单代码 44 //************************************************************************* 45 private void 新建NToolStripMenuItem_Click(object sender, EventArgs e) 46 { 47 //判断当前文件是否是从磁盘打开,或者新建时文档不为空,并且文件未被保存 48 if(b == true || richTextBox1.Text.Trim() != "") 49 { 50 //若文件未保存 51 if(s == false) 52 { 53 string result; 54 result = MessageBox.Show("文件尚未保存,是否保存?", "保存文件", MessageBoxButtons.YesNoCancel).ToString(); 55 switch(result) 56 { 57 case"Yes": 58 //若文件是从磁盘打开的 59 if(b == true) 60 { 61 //按文件打开的路径保存文件 62 richTextBox1.SaveFile(sdlgNotepad.FileName); 63 }else if(sdlgNotepad.ShowDialog()==DialogResult.OK) 64 { 65 richTextBox1.SaveFile(sdlgNotepad.FileName); 66 } 67 s = true; 68 richTextBox1.Text = ""; 69 break; 70 case"No": 71 b = false; 72 richTextBox1.Text = ""; 73 break; 74 } 75 } 76 } 77 } 78 79 //************************************************************************* 80 // 【保存】菜单代码 81 //************************************************************************* 82 private void 保存SToolStripMenuItem_Click(object sender, EventArgs e) 83 { 84 //若文件从磁盘打开并且修改了其中内容 85 if(b == true && richTextBox1.Modified == true) 86 { 87 richTextBox1.SaveFile(odlgNotepad.FileName); 88 s = true; 89 } 90 else if(b == false && richTextBox1.Text.Trim() != "" &&sdlgNotepad.ShowDialog() == DialogResult.OK) 91 { 92 //保存文件 93 richTextBox1.SaveFile(sdlgNotepad.FileName); 94 s = true; 95 b = true; 96 odlgNotepad.FileName = sdlgNotepad.FileName; 97 } 98 } 99 100 //************************************************************************* 101 // 【打开】菜单代码 102 //************************************************************************* 103 private void 打开OToolStripMenuItem_Click(object sender, EventArgs e) 104 { 105 //判断当前文件是否是从磁盘打开,或者新建时文档不为空,并且文件未被保存 106 try 107 { 108 if (b == true || richTextBox1.Text.Trim() != "") 109 { 110 if (s == false) 111 { 112 string result; 113 result = MessageBox.Show("文件尚未保存,是否保存?", "保存文件", MessageBoxButtons.YesNoCancel).ToString(); 114 switch (result) 115 { 116 case "Yes": 117 //若文件是从磁盘打开的 118 if (b == true) 119 { 120 //按文件打开的路径保存文件 121 richTextBox1.SaveFile(sdlgNotepad.FileName); 122 } 123 else if (sdlgNotepad.ShowDialog() == DialogResult.OK) 124 { 125 richTextBox1.SaveFile(sdlgNotepad.FileName); 126 } 127 s = true; 128 richTextBox1.Text = ""; 129 break; 130 case "No": 131 b = false; 132 richTextBox1.Text = ""; 133 break; 134 } 135 } 136 } 137 odlgNotepad.RestoreDirectory = true; 138 if ((odlgNotepad.ShowDialog() == DialogResult.OK) && odlgNotepad.FileName != "") 139 { 140 //打开文件 141 richTextBox1.LoadFile(odlgNotepad.FileName); 142 b = true; 143 } 144 s = true; 145 } 146 catch(Exception ex) 147 { 148 149 } 150 151 } 152 153 //************************************************************************* 154 // 【另存为】菜单代码 155 //************************************************************************* 156 private void 另存为AToolStripMenuItem_Click(object sender, EventArgs e) 157 { 158 if(sdlgNotepad.ShowDialog() == DialogResult.OK) 159 { 160 richTextBox1.SaveFile(sdlgNotepad.FileName); 161 s = true; 162 } 163 } 164 165 //************************************************************************* 166 // 【退出】菜单代码 167 //************************************************************************* 168 private void 退出XToolStripMenuItem_Click(object sender, EventArgs e) 169 { 170 //结束程序运行 171 Application.Exit(); 172 } 173 174 //************************************************************************* 175 // 【编辑】菜单各菜单项的单击代码 176 //************************************************************************* 177 // 【撤销】菜单代码 178 private void 撤消UToolStripMenuItem_Click(object sender, EventArgs e) 179 { 180 //撤销操作 181 richTextBox1.Undo(); 182 } 183 184 // 【复制】菜单代码 185 private void 复制CToolStripMenuItem_Click(object sender, EventArgs e) 186 { 187 //复制 188 richTextBox1.Copy(); 189 } 190 191 // 【剪切】菜单代码 192 private void 剪切TToolStripMenuItem_Click(object sender, EventArgs e) 193 { 194 //剪切 195 richTextBox1.Cut(); 196 } 197 198 // 【粘贴】菜单代码 199 private void 粘贴PToolStripMenuItem_Click(object sender, EventArgs e) 200 { 201 //粘贴 202 richTextBox1.Paste(); 203 } 204 205 // 【全选】菜单代码 206 private void 全选AToolStripMenuItem_Click(object sender, EventArgs e) 207 { 208 //全选 209 richTextBox1.SelectAll(); 210 } 211 212 //************************************************************************* 213 // 【格式】菜单代码 214 //************************************************************************* 215 private void 工具TToolStripMenuItem_Click(object sender, EventArgs e) 216 { 217 218 } 219 220 // 【自动换行】菜单代码 221 private void 自定义CToolStripMenuItem_Click(object sender, EventArgs e) 222 { 223 if(自定义CToolStripMenuItem.Checked == false) 224 { 225 //选中自动换行 226 自定义CToolStripMenuItem.Checked = true; 227 //设置为自动换行 228 richTextBox1.WordWrap = true; 229 } 230 else 231 { 232 //未选中自动换行 233 自定义CToolStripMenuItem.Checked = false; 234 //设置为不自动换行 235 richTextBox1.WordWrap = false; 236 } 237 } 238 239 // 【字体】菜单代码 240 private void 选项OToolStripMenuItem_Click(object sender, EventArgs e) 241 { 242 fdlgNotepad.ShowColor = true; 243 if(fdlgNotepad.ShowDialog() == DialogResult.OK) 244 { 245 richTextBox1.SelectionColor = fdlgNotepad.Color; 246 richTextBox1.SelectionFont = fdlgNotepad.Font; 247 } 248 } 249 250 //************************************************************************* 251 // 【帮助】菜单代码 252 //************************************************************************* 253 // 【关于】菜单代码 254 private void 关于AToolStripMenuItem_Click(object sender, EventArgs e) 255 { 256 MessageBox.Show("wky 编写", "关于\"记事本\"", MessageBoxButtons.OK); 257 } 258 259 //************************************************************************* 260 // 计时器控件的Tick事件代码 261 //************************************************************************* 262 private void tmrNotepad_Tick(object sender, EventArgs e) 263 { 264 //获取系统当前时间,并显示在状态栏中 265 tssLbl2.Text = System.DateTime.Now.ToString(); 266 } 267 268 private void 粘贴PToolStripButton_Click(object sender, EventArgs e) 269 { 270 richTextBox1.Paste(); 271 } 272 273 274 275 } 276 }