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 }