我们所做的机房收费系统,是运用的MDI多窗体方式,对多类数据进行存取和查询!在窗体显示设置上主要会遇到这样两个问题:

一、

程序运行后,为达到使用效率高的目的,父窗体显示一个“ 学生刷卡上下机”功能的界面,可是父窗体上除了可以放置picturebox,其他控件都放置不上去。如果拿picturebox当做一个容器放置空间,貌似可以,但是试过以后,发现其他子窗体在加载后会被picturebox挡在后面,无法显示和操作!

俗话说,点子总比问题多,最后终于有了解决办法:讲一个能满足“学生刷上下机”要求的子窗体,在父窗体的Load事件里 让这个子窗体跟着Load,并且其大小跟父窗体的大小相同,而且利用父窗体的Resize事件 让这个子窗体大小时刻与父窗体保持大小,基本上就达到目的了,如果想把这个子窗体完美嵌在父窗体里,还需把该此窗体的boderstyle属性设置为 0-None。这样这个问题就解决了!

二、

我们先把上面的子窗体叫做父窗体的底衬窗体,当底衬窗体设置好后,又出现了这样的问题:当其他子窗体加载后,如果不小心点击到了底衬窗体,底衬窗体被激活在所有窗体的最前面,结果这个倒霉的子窗体就被”底衬“挡在了身后,由于底衬的尺寸跟父窗体一般大,我们无法轻易找出子船体了,任凭你点坏鼠标恐怕也无能为力了!

在这里我们可以用ZOrder方法。Z代表的是立体坐标系中Z轴,也就是跟窗体平面垂直的方向,这个方法在MDI窗体中决定某个谋子窗体在所有子窗体在Z轴的次序,最底层(object.Zorder 1 可使其置于最底层)or最上层(object.Zorder 0 可使其)。然后我们可以这样设置:在父窗体的Activate事件里让底衬窗体 写入代码 me.Zoder 1,这样在激活底衬窗体的时候,他就会处在子窗体的最底层,子窗体就不会消失了!

三、

如果我们在操作过程中,加载子窗体的数目较多了,如果不随时关闭已有子窗体,他们就会一个个叠加在一块,弄得用户眼花缭乱,让操作有些繁琐。如果在打开心子窗体的同时能自动关闭或最小化已有窗体,就顺畅多了!在这里运用一下”遍历 窗体“ 的做法就OK了,先看一下代码:

Private Sub Form_Activate()
Dim a As Form
For Each a In FormsIf a.Name <> Form1.Name And a.Name <> MDIForm1.Name And a.Name <> Me.Name Thena.WindowState = 1Form1.ZOrder 1End IfNext
End Sub

使用说明:在每一个子窗体的Activate(激活)事件里,加入这段代码

作用原理:当某个子窗体激活的时候,对所有已加载的窗体进行一个判断,让除了自己、底衬窗体、主窗体以外的其他子窗体都最小化。

大家都知道,当子窗体最小化的时候,会最小化为一个控制栏停靠在,父窗体的左下角。如果想恢复这个最小化的窗体,图方便可以电子控制栏的”恢复“图标,所以为防止这个控制栏又被底衬窗体挡住,最后又用了Zorder方法让底衬窗体老老实实呆在最底层! 我们如果在点击下拉菜单加载窗体的代码中 加入form.windowstate=0 (Normal) ,也可以让最小化的子窗体再次显示出来。这样我们就有两种恢复子窗体的方法了!

综合这四个小技巧,这样的MDI多窗体界面操作起来就相当的流畅了!

博客地址:http://blog.csdn.net/chenjinge7/article/

转载于:https://www.cnblogs.com/lucky7/archive/2012/11/27/3768662.html

机房收费系统-- MDI子窗体显示技巧相关推荐

  1. 机房收费系统-- MDI子窗体显示技巧(续vb.net版)

    在vb6.0版的机房收费系统中说道过这个问题,回顾请点击:http://blog.csdn.net/chenjinge7/article/details/8231546这次在vb.net版本中想再次利 ...

  2. 机房收费系统系列二:MDI子窗体和主窗体显示

    在机房收费系统中,frmmain作为MDI的主窗体,想要在MDI主窗体上添加控件,picture控件是最好的伴侣,但是在添加了picture控件以后,问题也就随之而来了.点击子窗体的时候,子窗体被&q ...

  3. 机房收费系统问题集(2)——移动登陆界面+show出子窗体

       安装上机房收费系统样本,连接上数据库,在运行的时候,我很是佩服机房收费系统的高大上    在我亲自敲的时候遇到了下面的问题: (1)登陆界面不能用鼠标移动    在机房收费系统的样本中,登陆界面 ...

  4. MDI窗体与子窗体的显示问题--(如何让主窗体是被控件挡住的子窗体显示)

    机房收费系统热火朝天的进行着,于此同时问题也是毫不留情的就来了,在MDI窗体中添加了picture控件后,子窗体不能显示就是我遇到的第一个问题.刚刚着手做系统遇到这样的问题,挺棘手的,当时在网上查过很 ...

  5. 机房收费系统合作版(二):透过显示上机人数品味如何做到全心全意为人民服务

    [前言] 尘封半年之久的机房合作再次被鹅大组长提上日程,为了积极响应组长的号召最近两日在噼里啪啦的弄机房!逐渐追回了开始合作时信誓旦旦的宣言(详情点击<机房收费系统合作版:开始团队合作之旅> ...

  6. 机房收费系统--登录窗体

    在对机房收费系统有了大致的认识后,就开始做登录窗体了.登录窗体是最简单的,但是我们需要先理清思路,最好是能画一个简单的流程图,这样就能理清逻辑,在敲代码的时候就会非常简单. 在这里需要注意以下几点: ...

  7. 单例模式——解决MDI子窗体实例化的问题

    机房收费系统进行有一段时间了,但是始终有些历史遗留问题.比如,如何MDI子窗体如何显示在上层的问题和MDI子窗体实例化的问题. 对于如何显示在上层的问题,这次采用的还是SetParent函数,在模块里 ...

  8. 【机房收费系统】——傻瓜式报表设计器制作报表模板

    一.下载安装Grid++Report5.0: 1.搜索下载Grid++Report5.0并安装:(附赠哟~但是建议大家自己去下载) 云盘分享:https://yunpan.cn/c6ggtnHFDsg ...

  9. 机房收费系统-报表打印

    机房收费系统也进行了有一段时间了,现在也接近了机房项目末尾的时间.在这一段时间自己学到了好多.像之前跟大家分享有关登录.上下机.跟MDI窗体的一些问题跟解决, 今天来跟大家分享下机房收费系统里面日结账 ...

最新文章

  1. package org.springframework.stereotype包不存在
  2. eolinker开源版5_开源土豪沉金版空气质量检测仪AirWolf
  3. Ubuntu14.04 ROS Indigo安装教程,以及卸载方法
  4. gitlab基本工作原理
  5. final类是否可以被代理_浅谈Java【代理设计模式】——看这篇文章就懂了
  6. fastreport字体自适应_FastReport 自动换行与行高自适应及自动增加空行
  7. ERP核心业务流程和Oracle-ERP业务和数据对象分析
  8. ES6学习笔记二 新的声明方式和变量的解构赋值!
  9. zabbix-通过自动发现添加主机
  10. JS:ES6-9 初识Set与Map
  11. 启动Eclipse时,错误:WorkSpace Unavailable
  12. Oracle导出表数据客户端,使用PLSQL批量导出、导入表的数据(精简版的Oracle客户端亦可)...
  13. Java程序员简历模板,内含个人专业技能和项目经验介绍
  14. 雅虎 (YAHOO)相册下载工具 Beta1 发布
  15. 【软件需求工程与建模】13组组队项目选题介绍及项目计划安排
  16. 正则表达式美元符号$
  17. 无法打开internet站点ie6,7
  18. IDEA中HTML代码格式化问题
  19. Python单元测试unittest测试框架
  20. 微吼2022企业直播创见大会:探寻直播行业星辰大海

热门文章

  1. Android ——SoundPool播放音频
  2. Docker 存储 网络
  3. TMS320VC5509片内ADC采集
  4. Г函数(伽马函数)、分布
  5. CC3200底板测试-烧写CC3200-LAUNCHXL
  6. 给页面中的所有链接新窗口中打开
  7. Vs2010架构设计-层图(Layer Diagram)
  8. CMS系统模板引擎设计(5):Label应用初探
  9. 微信公众嵌套页面里再嵌入其他页面的一些问题
  10. 用jQuery实现页面遮罩弹出框