1.记事本功能简介
本章介绍的记事本程序具有文件的新建、打开、保存功能;文字的复制、粘贴、删除功能;字体类型、格式的设置功能;查看日期时间等功能,并且用户可以根据需要显示或者隐藏工具栏和状态栏。
2.项目创建及界面设计
新建窗体项目
选择文件—>新建—>项目—>模板—>Windows窗体应用—>下一步—>项目名称“NotePad”—>下一步—>创建成功如图所示
界面设计
窗体设计
单击记事本窗体,更改右下角相关属性如下表所示
属性 | 设置结果 |
---|---|
Name | NotePad |
StartPosition(运行后起始位置) | CenterScreen(中央屏幕) |
Text | 记事本 |
Size | 600,450 |
窗体内容设计
单击左边打开工具箱
菜单控件MenuStrip
拖入该控件到窗体合适位置
单击菜单栏,右下角Name属性更改为“mnusNotepad”
单击依次输入【文件(F)】、【编辑(E)】、【格式(O)】、【查看(V)】和【帮助(H)】如图所示
在菜单栏相应按钮下依次加入以下内容(快捷键后续设置中可设置成显示,分隔符如图一在键入中输入“-”即可)
逐个单击,按照下表属性进行相关属性设置
Text属性 | Name属性 | ShortcutKeys属性(快捷键) | ShowShortcutKeys属性 | Checked属性 |
---|---|---|---|---|
文件(&F) | tsmiFile | None | - | - |
新建(&N) | tsmiNew | Ctrl+N | True | - |
打开(&O) | tsmiOpen | Ctrl+O | True | - |
保存(&S) | tsmiSave | Ctrl+S | True | - |
另存为(&A) | tsmiSaveAs | None | - | - |
分隔符“-” | ||||
退出(&X) | tsmiClose | None | - | - |
– | ||||
编辑(&E) | tsmiEdit | None | - | - |
撤销(&U) | tsmiUndo | Ctrl+Z | True | - |
分隔符“-” | ||||
复制(&C) | tsmiCopy | Ctrl+C | True | - |
剪切(&T) | tsmiCut | Ctrl+X | True | - |
粘贴(&P) | tsmiPaste | Ctrl+V | True | - |
分隔符“-” | ||||
全选(&A) | tsmiSelectAll | Ctrl+A | True | - |
日期(&D) | tsmiDate | F5 | True | - |
– | ||||
格式(&O) | tsmiFormat | - | - | False |
自动换行(&W) | tsmiAuto | - | - | True |
字体(&F) | tsmiFont | - | - | False |
– | ||||
查看(&V) | tsmiView | - | - | False |
工具栏(&T) | tsmiToolStrip | - | - | True |
状态栏(&S) | tsmiStatusStrip | - | - | True |
– | ||||
帮助(&H) | tsmiHelp | - | - | - |
关于记事本(&A) | tsmiAbout | - | - | - |
工具栏控件ToolStrip
将该控件拖至窗体的合适位置
单击工具栏,右下角Name属性修改为“tlsNotepad”
右击工具栏,插入标准项,插入后效果如图所示
右击工具栏编辑项(不用打印功能可以直接删除),此处对其他功能的各类属性无需修改
多格式文本框控件RichTextBox
将该控件拖至窗体的合适位置
单击工具栏,在右下角将其Name属性改为“rtxtNotepad”
Anchor属性选择为“Top,Bottom,Left,Right”(窗体大小改变该控件大小也改变)
状态栏控件StatusStrip
将该控件拖动到窗体合适位置
单击该控件(如图),在右下角找到Items属性,单击Items属性右边的三个省略号(如图)
修改相关属性如下表所示
Name属性 | Anchor属性 | Dock属性 |
---|---|---|
stsNotepad | Top,Left | Bottom |
添加两个默认选择项,属性设置如下表
Name属性 | Text属性 |
---|---|
tssLbl1 | 就绪 |
tssLbl2 | 显示日期、时间 |
效果显示如下图
打开对话框OpenFileDialog
将该控件拖入窗体中
单击窗体下方OpenFileDialog控件
右下角更改属性如图所示
保存对话框SaveFileDialog
将该控件拖入窗体中
单击窗体下方SaveFileDialog控件
右下角更改属性如图所示
字体对话框FontDialog
将该控件拖入窗体中
单击窗体下方FontDialog控件
右下角更改属性如下图
计时器控件Timer
将该控件拖入窗体中
单击窗体下方timer控件
右下角更改属性如下表
Name属性 | tmrNotepad |
---|---|
Enabled属性 | True |
Interval属性 | 1000 |
最终界面效果展示
3.相关功能实现(具体代码)
公共变量声明
首先在代码的通用段声明两个布尔型的公共变量,“b”用于判断文件是新建的还是从磁盘打开的,“s”用于判断文件是否被保存。
双击窗体,进入代码区填写以下代码
/* 布尔变量b用于判断文件是新建的还是从磁盘打开的,
true表示文件是从磁盘打开的,false表示文件是新建的,默认值为false*/
bool b = false;
/* 布尔变量s用于判断文件件是否被保存,
true表示文件是已经被保存了,false表示文件未被保存,默认值为true*/
bool s = true;
RichTextBox多格式文本框代码
当多格式文本框中的文本发生改变后,设置布尔变量“s”的值为false,表示文件未保存。
双击rtxtNotepad(在Form1.cs中找到/新建rtxtNotepad代码段),进入代码区填写以下代码
private void rtxtNotepad_TextChanged(object sender, EventArgs e)
{
// 文本被修改后,设置s为false,表示文件未保存
s = false;
}
菜单代码
【文件(F)】菜单
【新建(N)】菜单项
单击该菜单项时新建一个空白文档,首先应该判断文件是从磁盘打开的还是新建的,若从磁盘打开则将前面定义的变量(b)设为“true”,否则设为“false”。这样做可以根据这个变量对文件进行相应的操作。并且每次保存文件后,都要将前面定义的变量(s)设为“true”,表示文件已经被保存。
单击新建菜单时,如果当前文件是从磁盘打开的,并且已经过修改,则要按OpenFileDialog控件的路径来保存文件。如果是新建的文件且内容不为空,则需要用SaveFileDialog控件来保存文件。
双