改变窗体大小时,控件的大小随之改变我们在设计窗体时,放置了一些可视的控件,比如Label,CommandButton,TextBox等等.当然在设计时大小位置都比较协调,但是一旦到了运行时,用户改变了窗体的大小,而我们的控件却不随着窗体大小的改变而改变,特别是用户最大化窗体时,经常出现许多控件仍然挤在窗体左上角的现象,看着很不舒服......那么,现在,如何来解决这个问题呢?当然是捕捉Form的Resize事件!下面是具体的代码: ’下面两句话放在Form的"通用"中声明Dim FrmW As Single '存放改变前的窗体的宽度 Dim frmH As Single '存放改变前的窗体的高度Private Sub Form_Load() If WindowState <> vbMinimized Then FrmW = Me.Width frmH = Me.Height '上面两句是初始化模块变量 End If End SubPrivate Sub Form_Resize() If FrmW = 0 Or frmH = 0 Then Exit SubDim MyCon Dim sig1 As Single, sig2 As Single sig1 = Me.Width / FrmW sig2 = Me.Height / frmH For Each MyCon In Me.Controls
With MyCon .Left = Int(.Left * sig1) .Top = Int(.Top * sig2) .Width = Int(.Width * sig1) .Height = Int(.Height * sig2) End With
Next MyConFrmW = Me.Width frmH = Me.HeightEnd Sub 如果,你把上述代码加到你的窗体代码中,你会发现改变了窗体大小后,窗体上的可视控件的大小和位置也会相应的变化。
要么换.net,
delphi也可以
’下面两句话放在Form的"通用"中声明Dim FrmW As Single '存放改变前的窗体的宽度
Dim frmH As Single '存放改变前的窗体的高度Private Sub Form_Load()
If WindowState <> vbMinimized Then
FrmW = Me.Width
frmH = Me.Height
'上面两句是初始化模块变量
End If
End SubPrivate Sub Form_Resize()
If FrmW = 0 Or frmH = 0 Then Exit SubDim MyCon
Dim sig1 As Single, sig2 As Single
sig1 = Me.Width / FrmW
sig2 = Me.Height / frmH
For Each MyCon In Me.Controls
With MyCon
.Left = Int(.Left * sig1)
.Top = Int(.Top * sig2)
.Width = Int(.Width * sig1)
.Height = Int(.Height * sig2)
End With
Next MyConFrmW = Me.Width
frmH = Me.HeightEnd Sub
如果,你把上述代码加到你的窗体代码中,你会发现改变了窗体大小后,窗体上的可视控件的大小和位置也会相应的变化。
MAILTO:[email protected]