今天在敲机房收费系统的时候,遇到了一个问题,让我十分郁闷——我把某些窗体的MDIChild属性改为Ture后,窗体竟然不显示了!我是百思不得其解啊!奋战了半天,我终于解决了!
一开始,我只是在菜单的单击事件中写了一句:frmRegister.Show。MDIChild属性为Ture后,窗体是无论如何也显示不出来了。
为什么MDI子窗体显示不出来了呢?是因为它被frmMain里面的Picture控件挡住了。
后来我在菜单的单击事件里加了一句:Picture1.Visible=False。后,窗体如愿的显示了。但是这样很不方便,想要看到父窗体里面的内容,还得去设置各个窗体之间的显示问题,想想都头大。
后来查了一下资料,看了一下师哥师姐的博客。大多引用了一个API函数:SetParent。
首先要在模块里面声明这个函数:Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long。
一开始,我在菜单的单击事件里面加了一句:
SetParent frmRegister.hwnd, frmMain.hwnd。
结果提示错误:只能有一个父窗体。
后来又查了一下资料,改为了:SetParent frmRegister.hwnd, Picture1.hwnd。
然后问题就圆满解决了。
下面了解了一下SetParent这个API函数吧。
函数功能:改变某个子窗体的父窗口。
函数模型:SetParent hWndChild.hwnd, hWndNewParent.hwnd 。
hWndChild是子窗口的句柄。hWndNewParent是新父窗口的句柄。
返回值:为子窗体的原父窗口句柄。
另外,在子窗体显示的时候,还出现了一个问题。
子窗体只显示一小块,但是可以下拉变大。
这个问题,其实只需要把窗体的Borderstyle属性由2-Sizable改为1-Fixed Single就好。
2-Sizable:是双线边框,可以改变窗口大小。
1-Fixed Single:是单线边框,不可以改变窗口大小。
3-Fixed Double:是双线边框,不可以改变窗体大小
4-Fixed Tool Window:窗体外观与工具条相似。有关闭按钮 ,不可改变窗口大小。 5-Sizable Tool Window:窗体外观与工具条相似。有关闭按钮,可以改变窗口大小。
通过这些错误,发现自己的经验真是太太匮乏了。。。以后要好好积累。