机房收费系统(一)MDI子窗体以及在其中应用Picturebox问题
来源:互联网 发布:2017最新seo 编辑:程序博客网 时间:2024/06/07 07:23
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">敲机房收费系统时也遇到了各种问题,但正是这些各种各样的问题一步步让我们提高。</span>
(一)MDI子窗体和picturebox同级问题
主窗体由于是MDI窗体,因此要在里面加command控件就要先添加picturebox控件,然后在控件里面添加各种控件,这也就导致一个问题,当打开它的一个子窗体时,就会出现如下情况:
如果图片框占据全屏,其他窗体就会被挡住,
这是因为 MDI 程序中子窗体实际上是位于 MDIClient 里,就是说子窗体的父窗体 是 MDIClient,而放置在MDI中的 picturebox 和MDIClient是同一级的层次结构
ThunderMDIForm--MDIForm1
--MDIClient
----ThunderFormDC--Form1 子窗体1
----ThunderFormDC--Form2 子窗体2
--ThunderPictureBoxDC MDI中 的 picturebox
此时可调用一个APIPublic Declare Function SetParent Lib "User32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
然后使窗体加载时调用这个API即可
Call SetParent(form1.hWnd, fMainForm.Picture1.hWnd)
form1.show
如果form1为fmainform的子窗体,那么不加form1.show也可以,否则必须加。
注意,在这个过程中,form1.hwnd表示为子窗体句柄,不能直接放在fmainform父窗体中,否则最小化时图标就会消失,需要放在picture中,即fmainform.picture1.hwnd(2)打开一个窗体,上一个窗体自动最小化问题
这个问题的解决是靠其他小伙伴的帮助才做到的,希望也可以帮助其他同学。
Dim frm As Form For Each frm In Forms If frm.Name <> Me.Name And frm.Name <> fMainForm.Name Then frm.WindowState = 1 End If Next对于大家其他的方法,也很乐意交流。
(3)窗体最小化后不能获得焦点问题
当打开一个新的子窗体,上一个子窗体会自动最小化,但上一个窗体回复后就失去了焦点,很多控件不能用,
对此我的解决方案是将这些窗体去掉MDIchild属性设为false即不为MDI子窗体,可以达到和mdi子窗体相同的效果,当恢复大小后又能重新获得焦点。
0 0
- 机房收费系统(一)MDI子窗体以及在其中应用Picturebox问题
- 机房收费系统问题(一)MDI子窗体不显示
- 机房收费系统-MDI窗体与子窗体的问题
- 机房收费系统-MDI窗体控件不能放置以及子窗体不能显示问题
- 机房收费系统(一)——解决子窗体被picturebox覆盖
- 机房收费系统问题(二)——MDI子窗体不显示
- 机房收费系统(四)MDI窗体
- 机房收费系统—MDI窗体与子窗体
- 【机房收费系统】——子窗体在MDI窗体中最小化(API函数:SetParent())
- 机房收费系统——MDI窗体与子窗体问题
- 机房收费系统-- MDI子窗体显示技巧
- 【机房收费系统】MDI菜单显示子窗体
- 【机房收费系统】菜单、MDI窗体等问题
- 机房收费系统-- MDI子窗体显示技巧(续vb.net版)
- 机房收费系统之MDI窗体
- 机房收费系统——MDI窗体
- 【机房收费系统】——MDI窗体
- 机房收费系统系列二:MDI子窗体和主窗体显示
- 堆和栈的区别(转过无数次的文章)
- 基数排序
- Hat’s Words(字典树)
- redis安装,主从集群
- 判断输入信息是否为空
- 机房收费系统(一)MDI子窗体以及在其中应用Picturebox问题
- JAVA 读取某一路径下的文件和文件夹信息
- iptables 防火墙及NAT技术
- 【转】逆元的几种求法
- VS2012-opencv2.4.4-环境搭建与配置
- 8个前沿的 HTML5 & CSS3 效果(附源码)
- 隐式类型转换
- memcpy函数用法
- 哈夫曼树