机房收费系统的主窗体是MDI窗体,为了在这个窗体上添加控件,所以我们在窗体上添加了picture控件,在MDI窗体中,子窗体实际上位于MDIClient里,即子窗体的父窗体就是MDIClient,而放置在MDI中的picture控件和MDIClient是同一级别的,由于层次结构,所以无法使子窗体显示在picture控件的上面(这段话出自刘杰师哥的博客)。为了将子窗体显示到父窗体的上面,所以我们使用了API函数,就是这个setparent函数(Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long,ByVal hWndNewParent As Long) As Long),思思用的就是这个函数,然后她成功了,但是我死活成功不了,老是报错就是这个:
这个问题已经让我苦恼了好几天,之前想着先不用主界面了,敲一个调一个,没想到今天别的窗体都没办法直接启动了,好了,有啥办法,调吧,之前其实查了好多资料,都说这样写是没错的,但是就是不能运行,还有好多就是答非所问,终于搜到一篇相关一点的,就是这个:实时错误426 只允许一个MDI窗体李雪师姐的博客,但是她的这种情况和我的不一样,我就真的只有这一个show,再一次卡在这,继续查,看到有人说别用sub main()做启动窗体,我就试着将login改成了启动窗体,然后稍微修改了一下代码,也可以运行了,但是每次关闭主窗体时,程序都没办法自己退出,还需要手动退出,而且感觉不用sub main特别不好,只好继续查,查到了这个:
一个工程只允许有一个MDIForm。此错误产生的原因及解决方法如下:
- 试图向工程中加载包含MDIForm的文件,该工程中已经包含一个MDIForm。
- 试图加载MDIForm的第二个实例,该MDIForm是用Dim或Set语句创建的。
在工程中仅能创建MDIForm的一个实例。
-
Set fMainform = New frmmain
fMainform.Show
难道问题出在这里?于是我把它改成了 frmmain.show,没想到真的可以运行了,但是思思也是这么写的,联想到李雪师姐的博客,这说明肯定在某个地方,我又把MDI窗体加载了一遍,不过我还没找到到底实在哪里,就只好先把模块中的这句改成这样:
frmmain.show
改成这样以后,运行的确实没什么问题了,先接着敲,看看能不能找到到底是在哪里又加载了一遍。
原文链接:https://www.f2er.com/vb/257854.html