机房收费系统之【只允许一个MDI窗体 错误:426】

简介: 机房收费系统之【只允许一个MDI窗体 错误:426】

机房收费系统的主窗体是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 的第二个实例,该 MDIForm 是用 Dim 或 Set 语句创建的。

在工程中仅能创建 MDIForm 的一个实例。


看到这里,突然豁然开朗,难道是我的模块有问题?我的模块登陆这块是照着学生敲得,有这么一句:


Set fMainform = New frmmain
    fMainform.Show


难道问题出在这里?于是我把它改成了 frmmain.show,没想到真的可以运行了,但是思思也是这么写的,联想到李雪师姐的博客,这说明肯定在某个地方,我又把MDI窗体加载了一遍,不过我还没找到到底实在哪里,就只好先把模块中的这句改成这样:


frmmain.show


改成这样以后,运行的确实没什么问题了,先接着敲,看看能不能找到到底是在哪里又加载了

目录
相关文章
|
10月前
第一次机房收费系统之显示全部窗体
第一次机房收费系统之显示全部窗体
29 0
|
10月前
|
API 数据库
数据库—机房收费系统之MDI窗体与子窗体
这可怎么办?于是果断百度,百度解说,MDI窗体上是不允许放控件的,but,可以在MDI窗体上放一个picturebox控件然后就能够放控件了,于是就这样去做了。
|
10月前
机房收费系统-登录窗体
机房收费系统-登录窗体
|
10月前
|
API
vb如何设置父窗体与子窗体——MDI窗体
vb如何设置父窗体与子窗体——MDI窗体
C#编程学习19:mdi窗体中子窗体不能重复打开的三种实现方式
C#编程学习19:mdi窗体中子窗体不能重复打开的三种实现方式
C#编程学习19:mdi窗体中子窗体不能重复打开的三种实现方式
第一次 机房收费系统——登录窗体
第一次 机房收费系统——登录窗体
107 0
第一次 机房收费系统——登录窗体
|
JavaScript 前端开发 C#
C#(二十七)之C#窗体应用
学习C#窗体的基本用法。
263 0
C#(二十七)之C#窗体应用
|
Windows
WinForm——MDI窗体
WinForm——MDI窗体
323 0
WinForm——MDI窗体
|
API Windows
Delphi 使窗体Showmodal后可以操作其他窗体
对话框ShowModal之后不能操作其它窗口,实际上是因为Windows Disable了其它窗口。所以当你需要在模态对话框中访问其它已经可见的窗口时,需要用EnableWindow API来激活对应的窗口。
1080 0