机房收费系统——子窗体最小化
2014-08-10 13:48
197 查看
机房收费系统已经进行了一段时间了,因为这是第一次脱离源代码,很多东西都是靠自己去琢磨。所以,这次遇到的问题是各式各样的。其中一个问题就是涉及到子窗体之间 的关闭问题,如何实现打开一个子窗体,而先前打开的子窗体自动最小化呢?
这个问题可是让自己纠结了老长时间啊。在实现的过程中遇到了很多问题:
1、一个控件或菜单的单击事件调不出想要调出的窗体
在管理员菜单选项下有一项“删除和添加用户”,其中单击“添加”按钮会调出“添加用户"窗体,可是当自己敲好代码后无论怎样都调不出所要得到的窗体,代码检查了N遍仍然无果。不过,再经过一番思考后,发现其实这个问题与先前遇到的问题是一个道理。就是此时的子窗体之间都是同级关系,当前窗体把想要调出的窗体掩盖了。解决这个问题的方法就是上次介绍的一个setparent函数(详见Private Sub cmdAdd_Click()
SetParent frm3Adduser.hwnd, MDIForm1.Picture1.hwnd
frm3Deladduser.WindowState = 1
frm3Adduser.Show
End Sub
这样此问题就可以解决了。
2、子窗体最小化后消失不见
打开一个子窗体后,点击最小化按钮,发现子窗体消失了,这是怎么回事呢?
其实这个还是窗体之间与picturebox的同级关系间的原因。我一开始在主窗体写调出各子窗体的代码是Private Sub checksjjlMenu_click()
SetParent frm1Checksjjl.hwnd, MDIForm1.hwnd
frm1Checksjjl.Show
End Sub 这样导致子窗体最小化时消失不见,而且这种情况下还有可能发生错误提示,提示只能使用一个MDI窗体。这又该如何解决呢?
其实只要改一个位置就行了Private Sub checksjjlMenu_click()
SetParent frm1Checksjjl.hwnd, Picture1.hwnd
frm1Checksjjl.Show
End Sub 3、打开一个子窗体,先前打开的窗体自动最小化
相信这个问题让很多人纠结着,我也是研究了很久才找到解决办法的。一开始我在网上找到了一串代码,不过效果与我想要的结果有一些出入,dim frm as form
for each frm in forms
。。。
next
后来王梦梅让我帮她解决一个问题,正好跟我的问题一样,只不过效果是不一样的。从她那里我找到了方法,就是通过判断窗体的属性问题去解决Private Sub form_activate()
Dim a As Form
For Each a In Forms
If a.Name <> Me.Name And a.Name <> MDIForm1.Name Then
a.WindowState = 1
End If
Next
End Sub
只不过这里唯一麻烦的就是需要在每一个窗体的下面写这么一行代码。其实我是一开始想要在模块中写的,只不过没有实现(如果你实现了,请赐教哦)
这个问题可是让自己纠结了老长时间啊。在实现的过程中遇到了很多问题:
1、一个控件或菜单的单击事件调不出想要调出的窗体
在管理员菜单选项下有一项“删除和添加用户”,其中单击“添加”按钮会调出“添加用户"窗体,可是当自己敲好代码后无论怎样都调不出所要得到的窗体,代码检查了N遍仍然无果。不过,再经过一番思考后,发现其实这个问题与先前遇到的问题是一个道理。就是此时的子窗体之间都是同级关系,当前窗体把想要调出的窗体掩盖了。解决这个问题的方法就是上次介绍的一个setparent函数(详见Private Sub cmdAdd_Click()
SetParent frm3Adduser.hwnd, MDIForm1.Picture1.hwnd
frm3Deladduser.WindowState = 1
frm3Adduser.Show
End Sub
这样此问题就可以解决了。
2、子窗体最小化后消失不见
打开一个子窗体后,点击最小化按钮,发现子窗体消失了,这是怎么回事呢?
其实这个还是窗体之间与picturebox的同级关系间的原因。我一开始在主窗体写调出各子窗体的代码是Private Sub checksjjlMenu_click()
SetParent frm1Checksjjl.hwnd, MDIForm1.hwnd
frm1Checksjjl.Show
End Sub 这样导致子窗体最小化时消失不见,而且这种情况下还有可能发生错误提示,提示只能使用一个MDI窗体。这又该如何解决呢?
其实只要改一个位置就行了Private Sub checksjjlMenu_click()
SetParent frm1Checksjjl.hwnd, Picture1.hwnd
frm1Checksjjl.Show
End Sub 3、打开一个子窗体,先前打开的窗体自动最小化
相信这个问题让很多人纠结着,我也是研究了很久才找到解决办法的。一开始我在网上找到了一串代码,不过效果与我想要的结果有一些出入,dim frm as form
for each frm in forms
。。。
next
后来王梦梅让我帮她解决一个问题,正好跟我的问题一样,只不过效果是不一样的。从她那里我找到了方法,就是通过判断窗体的属性问题去解决Private Sub form_activate()
Dim a As Form
For Each a In Forms
If a.Name <> Me.Name And a.Name <> MDIForm1.Name Then
a.WindowState = 1
End If
Next
End Sub
只不过这里唯一麻烦的就是需要在每一个窗体的下面写这么一行代码。其实我是一开始想要在模块中写的,只不过没有实现(如果你实现了,请赐教哦)
相关文章推荐
- 机房收费系统(五)有关子窗体的最小化功能
- 【机房收费系统】——子窗体在MDI窗体中最小化(API函数:SetParent())
- 机房收费系统—实现子窗体自动最小化
- 机房收费系统之条件查询窗体
- 机房收费系统--系统用户管理模块和主窗体的建立(二)
- 机房收费系统总结之关闭窗体
- 机房收费系统初体验——"歪打"无按钮标题栏,"正着"父窗体加载picturebox无遮挡显示子窗体
- 机房收费系统--系统用户管理模块和主窗体的创建(一)
- 机房收费系统-- 跨越窗体从数据库里取数据
- 机房收费系统之主窗体
- 机房收费系统-- MDI子窗体显示技巧(续vb.net版)
- 机房收费系统总结——窗体代码框架
- 机房收费系统小叙——窗体和数据库的关系
- 机房收费系统之主窗体
- 机房收费系统之充值窗体
- 机房收费系统--系统用户管理模块和主窗体的建立(四)
- 机房收费系统-----如何解决子窗体被picturebox挡住的办法
- 机房收费系统--各个窗体功能实现的基本要点
- 充值窗体 机房收费系统
- 机房收费系统——添加删除用户窗体