第3章 单例模式.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 单例模式 ;本章教学内容;一、问题描述 写一个MDI(Multiple Document Interface)窗体程序,包含两个窗体,其中一个是“工具箱”窗体,单击菜单命令时生成一个工具箱。 二、初步实现 新建项目——选择“Windows窗体应用程序”; 输入项目名称——选择存储位置——确定; 设置窗体的IsMdiContainer属性为true,或者双击窗体后写如下代码: private void Form1_Load(object sender, EventArgs e) { this.IsMdiContainer = true; } ;在窗体上建立一个菜单ToolStripMenuItem ToolBox作为启动工具箱的按钮:双击“工具箱”面板上的“菜单和工具栏”中的“MenuStrip”,生成一个菜单项,单击 选择“MenuItem”,在属性窗口修改其Text属性为“工具箱”; “项目”菜单中“添加Windows窗体”,输入名称“FormToolbox.cs”——添加; 设置新窗体的FormBorderStyle属性为“FixedToolWindow”,“Size”属性为123(宽),290(高); 在新窗体设计窗口中,双击“工具箱”面板上“公共控件”中的“Button”,生成一个按钮,然后复制出来两个按钮,分别设置他们的Text属性为:工具一、工具二、工具三;;在“解决方案资源管理器”中双击“Form1.cs”打开Form1窗体,双击菜单栏的图标打开代码窗口。光标定位在下列事件中: private void toolStripMenuItem1_Click(object sender, EventArgs e) { } 在函数体中输入以下代码: FormToolbox ftb = new FormToolbox(); ftb.MdiParent = this; ftb.Show(); 10. 运行程序。单击工具箱可以弹出工具箱窗体。多次单击,多次弹出。 ;三、只生成一个对象 为了使工具箱只出现一次,可以在单击事件中判断这个工具箱窗体是不是出现过。因此,对ftb的定义应该放在事件之前。同时修改代码如下: private FormToolbox ftb; private void toolStripMenuItem1_Click(object sender, EventArgs e) { if (ftb == null) { ftb = new FormToolbox(); ftb.MdiParent = this; ftb.Show(); } };四、增加工具按钮,运行时单击工具按钮也可以实例化工具箱窗体。 1.右击“解决方案资源管理器”中的“Form1.cs”,选“打开”; 2.在工具箱中双击“菜单和工具栏”中的“ToolStrip”,在生成的图标处单击选”Button”; 3. 再双击该图标进入代码窗口,写如下代码: private void toolStripButton1_Click(object sender, EventArgs e) { if (ftb == null) { ftb = new FormToolbox(); ftb.MdiParent = this; ftb.Show(); } } 4. 运行程序;分析存在问题: (1)运行时,若关闭了工具箱窗体就再也弹不出来, 原因是关闭了的窗口资源已释放,但并不为null,其IsDisposed属性为true。 (2)代码重复,若要五个地方都需要实例化“工具箱”窗体得重复五次相同的代码,且若有小bug,需要改变五个地方。 五、封装实例化工具箱的代码为一个方法 private void openToolbox() { if (ftb == null || ftb.IsDisposed) ftb = new FormToolbox(); ftb.MdiParent = this;

文档评论(0)

糖糖 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档