综合项目开发(我的SDI记事本)
1.学习任务
在学习了基本知识并具体实践了前面各项任务之后,学生划分成小组,在教师的引导下,小组成员分工合作,按照应用程序开发的流程开发一个综合项目——我的SDI记事本。
在开发过程中,进一步巩固前面所学的知识,强化各种技术技能的实际操作能力,积累软件开发的经验,为将来实际工作打下坚实的基础。
2.任务实施技术分析
记事本分为前台程序和后台程序。
前台程序包括菜单和用于输入和显示文本的文本框区域,其中:
菜单包括文件,编辑,格式和帮助4个主要功能,在每个菜单下又包含了如下子菜单:
●文件: 新建,打开,保存,另存为,退出;
●编辑: 撤销,剪切,复制,粘贴,删除,全选;
●格式: 自动换行, 字体;
●帮助:关于
本次任务按照应用程序开发的流程开发一个记事本,实现当前记事本的基本功能,让学生使用前面章节所掌握的一系列技能,按步骤从需求分析、系统设计、公共类编写、各个功能页面设计。
1)主窗体设计步骤及要点解析:
(1)打开Microsoft Visual Studio 2005,单击“创建:项目”,项目类型:Visual C#,模板:Windows 应用程序,项目名称输入:MyNotepad,位置根据自己需要选择设定,单击“确定”按钮。
(2)单击Form1,在解决资源管理器中将Form1.cs改为NotepadForm.cs,在属性窗口修改Text属性——“我的SDI记事本”,StartPosition属性——CenterScreen
(3)在工具箱中将MenuStrip控件拖放到该窗体,在属性窗口中修改name属性——msNotepad后输入各级菜单,并且修改各自name和Text属性
(4)添加statusStrip控件,在属性窗口中修改name属性为ssNotPad,三次单击statusStrip控件左端出现的下拉式箭头,均选择StatusLabel,将出现toolStripStatusLabel1,在属性窗口中将三个的toolStripStatusLabel1的name 属性分别修改为slblXY、slblSpring、slblTime,其中将slblSpring的spring属性修改为true。
(5)添加TextBox控件,在属性窗口中修改name属性为txtEdit,Dock属性为Fill,Text属性为空。
2)要点解析:
步骤(1)窗体的StartPosition属性设置为CenterScreen,其目的是使得窗体运行后能显示在屏幕的中间位置。
步骤(2)各控件的命名是根据.NET 2005控件命名规范命名的,其中
步骤(3)statusStrip控件的toolStripStatusLabel的Spring 属性决定
ToolStripStatusLabel 控件是否自动填充 StatusStrip 控件中的可用空间。
步骤(4)    Dock属性为Fill,其目的是使得程序运行后文本框控件TextBox能充满窗体Form的菜单栏和状态栏余下的部分。
3)知识库
(1)窗体Form控件
窗体是应用程序的基本单元,可以是标准窗口、多文档界面窗口或者对话框等等。
(2)TextBox控件
TextBox控件是工具箱中最常用的控件之一。其主要作用是允许用户在应用程序中输入或编辑文本,当然也可以将控件的只读属性设为true,用作显示文本,而不允许用户编辑文本框中所显示的内容。在TextBox中编辑的文本可以是单行的,也可以是多行的,还可以设置为密码字符屏蔽状态作为密码输入框。
menustrip和toolstrip(3)主菜单MenuStrip控件
MenuStrip 控件主要用于生成所在窗体的主菜单。在设计窗体中添加该控件后,会在窗体上显示一个菜单栏,可以直接在此菜单栏上编辑各主菜单项及对应的子菜单项,也可以通过鼠标右键单击对应的菜单项修改项的类型;当菜单的结构建立起后,再为每个菜单项编写事件代码,即可完成窗体的菜单设计。
编辑各菜单项内容时,可以用符号“&”指定该菜单项的组合键,让其后的字母带下划线显示,如编辑菜单项“E&xit”,则会显示为“Exit”,意思是可以直接用“Alt+x”组合键实现与单击该菜单项相同的功能;用符号“-”可以在菜单中显示各项之间的分隔条。该控件常见属性如下表:
该控件的常见事件:
Click事件:单击菜单项时触发。
DropDownClosed事件:关闭菜单项的子菜单时触发的操作。
DropDownItemClicked事件:单击菜单项的子菜单中任何一项时触发的操作。
DropDownOpened事件:菜单项的子菜单打开之后触发的操作。
DropDownOpening事件:打开菜单项的子菜单时触发的操作。
(4)状态栏statusStrip控件
statusStrip控件可以在窗体底部使用有框架的区域显示正在操作当前Windows窗体的用户的相关信息,或当前系统的一些信息。
3)“我的SDI记事本”的功能实现
功能描述:代码实现“我的记事本”主界面的主要功能。
设计步骤及要点解析
(1)导入名称空间
1using  System.IO;
(2)双击“新建”菜单项,进入“新建”菜单的单击事件
2private void tsmiNew _ Click(object sender, EventArgs e)
3{
4  if (txtEdit.Modified && txtEdit.Text != "")
5  {
6  DialogResult result = MessageBox.Show("文件" + Text + "内容已经改
变。\n\n您是否要保存文件?", "记事本", MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question);
7      if (string.Equals(result, DialogResult.Yes))
8      {
9          SaveFileDialog save = new SaveFileDialog();
10          save.Filter = "文本文件|*.text;*.txt";
11        if (save.ShowDialog() == DialogResult.OK)
12        {
13          SaveInfo(save.FileName);
14          txtEdit.Text = "";
15          this.Text = "无标题-记事本";
16        }
17      }
18    else if (string.Equals(result, DialogResult.Cancel))
19          {
20          }
21        else if (string.Equals(result, DialogResult.No))
22              {
23                  txtEdit.Text = "";
24                  this.Text = "无标题-记事本";
25              }
26        }
27}