c程序设计(第2版) 教学课件 作者 赵震奇 教案 项目三 自制记事本2.doc

(8页)

'c程序设计(第2版) 教学课件 作者 赵震奇 教案 项目三 自制记事本2.doc'

《c程序设计(第2版) 教学课件 作者 赵震奇 教案 项目三 自制记事本2.doc》由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关《c程序设计(第2版) 教学课件 作者 赵震奇 教案 项目三 自制记事本2.doc》文档请在天天文库搜索。

1、教案教 师班级科 目C#程序设计开课时间地 点机房课题名称项目三:自制记事本课时数6背景分析本课程是为软件技术专业的学生开设的一门很重要的程序设计类课程。通过记事本项目的设计,学习者学习了多文档窗体的相关知识。多文档窗体程序可以在任一时刻在不同的窗口中保存多个已打开的文档,其他与单文档窗体程序大同小异。学生已经具备一定的应用软件能力。根据课程教学目标和学生的专业特点,教学中应当注重培养学生的操作能力、思维能力和学习能力。本课采用以项目教学为主,边讲边做,让学生在做的过程中学会探索、学会合作。学习目标设 定1. 控件基本控件属性与事件、多文档窗体的实现。2. 培养学生积极思考、敢于尝试,让学生体验学习的乐趣,激发学生对本课程的学习兴趣。学习任务描 述学习任务围绕学生成绩统计的综合运用而展开,根据教师设计的项目,并将其分解为任务完成。通过任务的设定,在对比中,引导学生自主学习、合作学习、竞争。

2、学习。教学情境创 设本节课通过对一个贴近学生生活的项目学习,引导学生做中学习、合作学习。围绕课堂总目标,让学生在不断的成功体验中进行快乐学习。教学资源准 备时间资源:课前资料收集、课堂教学、课后资料整理、完成作业信息资源:教案、教学素材人员资源:1位专业教师,1位专业指导教师,学生小组设备资源:2.2 GHz 或速度更快的 CPU、1GB或更大容量的 RAM、1280x1024 显示器、7200 RPM 或更高转速的硬盘;操作系统:Windows 7或以上;开发软件:Visual Studio 2012 中文版(含MSDN);教 学 过 程 实 施内 容方法【导入】某软件公司开发了一套系统,其中想要嵌入一个类似于windows系统所自带的记事本程序,但系统所带的记事本程序不能同时打开多个文档。程序员小季准备自己开发一个记事本软件。【新课】项目三:自制记事本【项目描述】制作自制记事本,涉及到。

3、多文档窗体(MDI)。本项目主要有两个任务: 1.制作主窗体和子窗体2.添加各项功能【项目分析】系统除了基本的文件打开、保存功能以外,还应具备文本设置功能和多文档窗口的功能。制作记事本的主要步骤:1.制作主窗体和子窗体2.添加各项功能任务二 添加各项功能【任务描述】系统中,需要添加基本的文本设置功能,包括字体、段落,能对打开的多个文档进行布局以便查看,能保存简单文本和丰富文本。【任务实施】1.字体设置在字体设置之前,首先要在窗体加载的时候填充字体组合框tscbFontFamily和字体大小组合框tscbFontSize中的Items属性,具体代码如下: private void FormMain_Load(object sender, EventArgs e) { FontFamily[] ffs = FontFamily.GetFamilies(this.CreateGraphics()。

4、); foreach (FontFamily ff in ffs) { tscbFontFamily.Items.Add(ff.Name); } foreach(int size in fontSizes) { tscbFontSize.Items.Add(size); } }添加tscbFontFamily控件SelectedIndexChanged事件如下: private void tscbFontFamily_SelectedIndexChanged(object sender, EventArgs e) { frmChild fc = this.ActiveMdiChild as frmChild; if (fc == null || fc.rtbTemp.SelectionFont == null) return; Font newFont = new Font((String。

5、)tscbFontFamily.SelectedItem, fc.rtbTemp.SelectionFont.Size); fc.rtbTemp.SelectionFont = newFont; fc.rtbTemp.Focus(); }添加tscbFontSize控件SelectedIndexChanged事件如下: private void tscbFontSize_SelectedIndexChanged(object sender, EventArgs e) { frmChild fc = this.ActiveMdiChild as frmChild; if (fc == null || fc.rtbTemp.SelectionFont == null) return; Font newFont = new Font(fc.rtbTemp.SelectionFont.Name,C。

6、onvert.ToSingle(tscbFontSize.Text)); fc.rtbTemp.SelectionFont = newFont; fc.rtbTemp.Focus(); }加粗字体按钮tsbBold的Click事件代码如下: private void tsbBold_Click(object sender, EventArgs e) { frmChild fc = this.ActiveMdiChild as frmChild; Font oldFont = fc.rtbTemp.SelectionFont; if (fc == null && oldFont == null) return; Font newFont; if (oldFont.Bold) { newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bo。

7、ld); } else { newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold); } fc.rtbTemp.SelectionFont = newFont; fc.rtbTemp.Focus(); }倾斜字体按钮tsbItalic的Click事件代码如下: private void tsbItalic_Click(object sender, EventArgs e) { frmChild fc = this.ActiveMdiChild as frmChild; Font oldFont = fc.rtbTemp.SelectionFont; if (fc == null && oldFont == null) return; Font newFont; if (oldFont.Italic) { newFont = n。

8、ew Font(oldFont, oldFont.Style & ~FontStyle.Italic); } else { newFont = new Font(oldFont, oldFont.Style | FontStyle.Italic); } fc.rtbTemp.SelectionFont = newFont; fc.rtbTemp.Focus(); }字体下划线按钮tsbUnderLine的Click事件代码如下: private void tsbUnderLine_Click(object sender, EventArgs e) { frmChild fc = this.ActiveMdiChild as frmChild; Font oldFont = fc.rtbTemp.SelectionFont; if (fc == null && oldFont == null。

9、) return; Font newFont; if (oldFont.Underline) { newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Underline); } else { newFont = new Font(oldFont, oldFont.Style | FontStyle.Underline); } fc.rtbTemp.SelectionFont = newFont; fc.rtbTemp.Focus(); } 2. 段落设置左对齐按钮tsbLeft的Click事件代码如下: private void tsbLeft_Click(object sender, EventArgs e) { frmChild fc = this.ActiveMdiChild as frmChild; if (fc == nu。

10、ll) return; fc.rtbTemp.SelectionAlignment = HorizontalAlignment.Left; }居中按钮tsbMid的Click事件代码如下: private void tsbMid_Click(object sender, EventArgs e) { frmChild fc = this.ActiveMdiChild as frmChild; if (fc == null) return; fc.rtbTemp.SelectionAlignment = HorizontalAlignment.Center; }右对齐按钮tsbRight的Click事件代码如下: private void tsbRight_Click(object sender, EventArgs e) { frmChild fc = this.ActiveMdiChil。

11、d as frmChild; if (fc == null) return; fc.rtbTemp.SelectionAlignment = HorizontalAlignment.Right; }3.颜色设置添加ColorDialog控件colorDialog1,添加Click事件如下: private void tsbColor_Click(object sender, EventArgs e) { if (colorDialog1.ShowDialog() == DialogResult.OK) { frmChild fc = this.ActiveMdiChild as frmChild; if (fc == null || fc.rtbTemp.SelectionColor == null) return; fc.rtbTemp.SelectionColor = colorDia。

12、log1.Color; fc.rtbTemp.Focus(); } }4.窗口布局层叠菜单“层叠CToolStripMenuItem”的Click事件代码如下: private void 层叠CToolStripMenuItem_Click(object sender, EventArgs e) { LayoutMdi(MdiLayout.Cascade); }垂直平铺菜单“垂直平铺VToolStripMenuItem”的Click事件代码如下: private void 垂直平铺VToolStripMenuItem_Click(object sender, EventArgs e) { LayoutMdi(MdiLayout.TileVertical); }水平平铺菜单“水平平铺HToolStripMenuItem”的Click事件代码如下: private void 水平平铺HTool。

13、StripMenuItem_Click(object sender, EventArgs e) { LayoutMdi(MdiLayout.TileHorizontal); }排列图标菜单“排列图标AToolStripMenuItem”的Click事件代码如下: private void 排列图标AToolStripMenuItem_Click(object sender, EventArgs e) { LayoutMdi(MdiLayout.ArrangeIcons); }全比关闭菜单“全部关闭LToolStripMenuItem”的Click事件代码如下: private void 全部关闭LToolStripMenuItem_Click(object sender, EventArgs e) { if (this.MdiChildren.Length > 0) //当子窗体个数。

14、大于的时候遍历所有子窗体 { foreach (Form frmChild in this.MdiChildren)//遍历所有子窗体 frmChild.Close(); //关闭子窗体 } }5.文件保存 文件可以以txt和rtf两种方式保存,在保存的时候用户可以选择,程序中需要判断。自定义以下方法: private void SaveAsFile(string fileName, frmChild fc) { string fnExt = fileName.Substring(fileName.LastIndexOf(".") + 1).ToLower(); //判断保存类型txt或者rtf if (fnExt == "txt") fc.rtbTemp.SaveFile(fileName, RichTextBoxStreamType.PlainText); else fc.rtbTem。

15、p.SaveFile(fileName, RichTextBoxStreamType.RichText); //保存后重新加载 if (fnExt == "txt") fc.rtbTemp.LoadFile(fileName, RichTextBoxStreamType.PlainText); else fc.rtbTemp.LoadFile(fileName, RichTextBoxStreamType.RichText); //更改窗体名称及窗体标题栏显示名称 fc.Name = fc.Text = fileName; }“保存”菜单“保存SToolStripMenuItem”的Click事件代码如下: private void 保存SToolStripMenuItem_Click(object sender, EventArgs e) { frmChild fc = this.Act。

16、iveMdiChild as frmChild; if (fc.Name.Contains(@"\")) //打开保存过的文件,窗体的Name属性采用的绝对路径,故包含字符“\” SaveAsFile(fc.Name, fc); else 另存为AToolStripMenuItem_Click(null, null); } “另存为”菜单“另存为AToolStripMenuItem”的Click事件代码如下: private void 另存为AToolStripMenuItem_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { if (IsExistChildForm(saveFileDialog1.FileName)) { MessageBox.Show("。

17、另存的文件已打开,请先关闭", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } SaveAsFile(saveFileDialog1.FileName, this.ActiveMdiChild as frmChild); } }其中调用了自定义方法IsExistChildForm,作用是当在另存文件的时候,判断该文件是否处于打开状态,代码如下: private bool IsExistChildForm(string _ChildFormName) { foreach (Form form in this.MdiChildren) { if (string.Compare(form.Name, _ChildFormName, true) == 0) { form.BringToFront(); return 。

18、true; } } return false; }6.打开文件自定义方法,代码如下: private void OpenChildForm(string fileName) { if (IsExistChildForm(fileName)) return; frmChild fc = new frmChild(); fc.Name = fc.Text = fileName; string fnExt = fileName.Substring(fileName.LastIndexOf(".") + 1).ToLower(); if (fnExt == "txt") fc.rtbTemp.LoadFile(fileName, RichTextBoxStreamType.PlainText); else fc.rtbTemp.LoadFile(fileName, RichTextBoxStrea。

19、mType.RichText); fc.MdiParent = this; fc.Show(); fc.rtbTemp.SelectionChanged += new EventHandler(rtbTemp_SelectionChanged);// }7.“编辑”菜单各个功能代码如下: private void 重做RToolStripMenuItem_Click(object sender, EventArgs e) { frmChild fc = this.ActiveMdiChild as frmChild; if (fc == null) return; fc.rtbTemp.Redo(); } private void 撤消UToolStripMenuItem_Click(object sender, EventArgs e) { frmChild fc = this.Acti。

20、veMdiChild as frmChild; if (fc == null) return; fc.rtbTemp.Undo(); } private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e) { frmChild fc = this.ActiveMdiChild as frmChild; if (fc == null) return; fc.rtbTemp.Cut(); } private void 复制ToolStripMenuItem_Click(object sender, EventArgs e) { frmChild fc = this.ActiveMdiChild as frmChild; if (fc == null) return; fc.rtbTemp.Copy(); } private vo。

21、id 粘贴PToolStripMenuItem_Click(object sender, EventArgs e) { frmChild fc = this.ActiveMdiChild as frmChild; if (fc == null) return; fc.rtbTemp.Paste(); }8.其他功能当光标在文档中的文本上时,若文本加粗,则加粗按钮被选中;若文本倾斜,则倾斜按钮被选中;若文本加下划线,则下划线按钮被选中。编写自定义方法,代码如下: private void rtbTemp_SelectionChanged(object sender, EventArgs e) // { frmChild fc = this.ActiveMdiChild as frmChild; if (fc == null || fc.rtbTemp.SelectionFont==null)。

22、 return; // tsbBold.Checked = fc.rtbTemp.SelectionFont.Bold; tsbItalic.Checked = fc.rtbTemp.SelectionFont.Italic; tsbUnderLine.Checked = fc.rtbTemp.SelectionFont.Underline; }在程序中需要的地方,可以用下面语句可以使用以上方法:fc.rtbTemp.SelectionChanged += new EventHandler(rtbTemp_SelectionChanged);【项目小结】 通过记事本项目的设计,学习者学习了多文档窗体的相关知识。多文档窗体程序可以在任一时刻在不同的窗口中保存多个已打开的文档,其他与单文档窗体程序大同小异。【思考与练习】1.编写程序“自制简易写字板”。创设情境、激发学习兴趣营造良好的学习氛围明确任务,通过系列实验逐步呈现知识师生互动学习环节包括“实验与思考”、“观察与思考”、“交流与分享”巡回指导师生互动学习环节包括“实验与思考”、“观察与思考”、“交流与分享”教师及时引导与评价学习环节分为“合作与探索”、“交流与分享”、“实践与体验”教师巡回指导教师及时评价与引导学习环节分为“合作与探索”、“成功的体验”、“思考与提高”教师巡回指导学习环节分为“合作与探索”、“成功的体验”、“思考与提高”教师巡回指导学习环节分为“合作与探索”、“成功的体验”学生评价、教师评价教师巡回指导学习环节分为“合作与探索”、“成功的体验”学生评价、教师评价。

关 键 词:
教学 作者 教案 项目 自制 记事本 程序设计
 天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:c程序设计(第2版) 教学课件 作者 赵震奇 教案 项目三 自制记事本2.doc
链接地址: https://www.wenku365.com/s-59387005.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给天天文库发消息,QQ:1290478887 - 联系我们

本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。本站是网络服务平台方,若您的权利被侵害,侵权客服QQ:1290478887 欢迎举报。

1290478887@qq.com 2017-2027 https://www.wenku365.com 网站版权所有

粤ICP备19057495号 

收起
展开