一、问题描述
最近做到上下机,找不到控制上机的窗体,后来突然发现上机的窗体就是窗体加载时显示在首页的窗体啊,但这些控件貌似是放在MDI主窗体上的。但是——小编惊讶的发现,放不上去!
二、解决方法
1、使用PictureBox
后来发现只有PictureBox控件可以放在主窗体,恰好可以在PictureBox上放控件,但是一运行,小编又惊讶的发现其他的子窗体不见了!后来发现,原来是子窗体跑到了PictureBox的后面,被挡住了!此时可以用API函数来解决这个问题:
第一步:
外接程序——外接程序管理器
第二步:
找到API函数,选择“在启动中加载”与“加载/卸载”
第三步:
选中系统的模块Module1——外接程序——API浏览器——加载文本文件——WIN32API.TXT——打开
第四步:
搜索SetParent——添加——插入
第五步:
可以看到Module1中出现了这句代码:Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
第六步:
此时在MDI窗体里在对应的子窗体中写如下代码:运行一下,就会惊喜的发现成功了!
Private Sub About_Click()
SetParent FrmAbout.hwnd, Frmmain.hwnd
FrmAbout.Show
End Sub
2.另建一个子窗体
然后突然想到我的学生信息管理系统,当时为了让学生系统每次都只能显示一个窗体,并且每次打开一个窗体后都自动关闭另一个窗体,但由于报错的原因,主窗体上必须保留一个窗体,所以让一个子窗体一直显示在主窗体的界面,以此达到想要的效果。这样虽然达到了想要的效果,但是我感觉这种方法还是一定的缺陷,欢迎有更好解决办法的小伙伴与小编交流分享!
三、最后
为学正如撑上水船,一篙不可放缓! ——宋•朱熹