用VB6设计的一个窗体:
由于使用的人多,为了能适应所有人的屏幕,所以在窗体的resize事件中对各个容器大小进行了变化:
Private Sub Form_Resize()
'搜索框大小
Frame1.Left = (Me.Width - 23490) + 20160
Frame1.Height = Me.Height - Frame1.Top - 600
lab条数.Top = Frame1.Height - lab条数.Height - 200
labModel.Top = lab条数.Top - labModel.Height - 200
labOrder.Top = labModel.Top - labOrder.Height - 200
'订单列表框
Frame4.Left = Frame1.Left - Frame4.Width - 200
Frame4.Height = Me.Height - Frame4.Top - 600
Frame7.Top = Frame4.Height - Frame7.Height - 200
Frame5.Top = Frame7.Top - Frame5.Height - 200
Frame6.Top = Frame5.Top - Frame6.Height - 200
MSorderList.Height = Frame6.Top - MSorderList.Top - 200
Frame2.Width = (Me.Width - 23490) + 15375 - 100
MScontract.Width = Frame2.Width - 300
Frame3.Width = (Me.Width - 23490) + 15375 - 100
Frame3.Height = Me.Height - Frame3.Top - 600
MSpart.Width = Frame2.Width - 300
MSpart.Height = Frame3.Height - MSpart.Top - 200
End Sub
考虑到窗体基本功能的使用,所以想要限制窗体调整时的最小尺寸,当宽与高小于某个尺寸时就退出resize这个事件(注意,vb6中单位为twip,中文为缇,相当于1500为100分辨率):
If Me.Width < 19500 Then
Me.Width = 19500
Exit Sub
End If
If Me.Height < 10500 Then
Me.Height = 10500
Exit Sub
End If
由于台式电脑分辨率普遍都较大,没有出现问题,但却在使用笔记本的电脑上出了问题,会出现如下提示:
分析后发现原因是笔记本的分辨率的宽度尺寸比窗体设计的最小宽度更小,当最大化时,窗体的尺寸又不能缩到比限制的宽度还小,出现了矛盾,所以就出错了。
解决方法有两个,一是在resize中设定更小的宽高限制,使所有设备的分辨率都大于这个尺寸。
二是去掉原宽度的最小尺寸限制,爱多大都行。