【转载】用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 }

 

posted @ 2017-10-25 11:07  杨浪  阅读(1917)  评论(0编辑  收藏  举报