机房收费系统-----如何解决子窗体被picturebox挡住的办法

文章详细介绍了在MDI窗体中如何通过使用SetParent API函数来间接添加按钮,并解释了Align属性的作用以及PictureBox控件在MDI窗体中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  做机房收费系统时,我会遇到这样一个问题:在父窗体上无法添加label,text或者是commandbutton等这些控件。

  那是因为只有具有Align或者是不可见的控件(如timer)才可以直接放到mdi的主窗体上。因为mdi是其它子窗体的容器。如果能放置按钮的话,那么显示子窗体的时候按钮将会被盖住。可以先在mdi上放置一个具有Align属性的控件。例如PictureBox,再把按钮放到PictureBox上。这样才可以间接的把按钮放到mdi主窗体上。

   其中Align属性:返回或设置一个值,确定对象是否可在窗体上以任意大小、在任意位置上显示,或是显示在窗体的顶端、底端、左边或右边,而且自动改变大小以适合窗体的宽度。对象在MDI窗体的缺省值是在顶部,其宽度等于窗体的 ScaleWidth 属性设置值。

   PictureBox 和 Data 控件是唯一能放在 MDI 窗体上的标准控件。MDI窗体的内部区域定义为没有被控件覆盖的空间。当 MDI 子窗体在 MDI 父窗体中最大化时,它不会覆盖任何控件。

   但是如果将picturebox拉伸到与mdi窗体最大化时一样大小时,子窗体就无法显示了。那么怎么解决这个问题呢?

我用到了API函数----SetParent

声明方法:

Private Declare FunctionSetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParentAs Long) As Long

函数功能:该函数改变某个子窗口的父窗口。

参数:

hWndChild:子窗口句柄。hWndNewParent:新的父窗口句柄。如果该参数是NULL,则桌面窗口就成为新的父窗口。

返回值:如果函数成功,返回值为子窗口的原父窗口句柄;如果函数失败,返回值为NULL。

具体代码是:

PrivateSub RechargeMenu_Click()

SetParentfrmRecharge.hWnd, frmMain.hWnd

frmRecharge.Show

End Sub

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值