我们在设计窗体时,放置了一些可视的控件,比如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 Sub
Private Sub Form_Resize() if FrmW=0 or FrmH=0 then exit sub
dim MyCon as me.Controls dim sig1 as single,sig2 as single sig1 = Me.Width / FrmW sig2 = Me.Height / FrmH For Each MyCon In Me.Controls If TypeOf MyCon Is Label Or _ TypeOf MyCon Is CommandButton Or _ TypeOf MyCon Is ListView Or _ TypeOf MyCon Is TextBox Then With MyCon .Left = Int(.Left * sig1) .Top = Int(.Top * sig2) .Width = Int(.Width * sig1) .Height = Int(.Height * sig2) End With End If Next MyCon
FrmW = Me.Width FrmH = Me.Height
End Sub
我上述的代码中用到了四个可视的控件:Label,CommandButton,ListView,TextBox,根据你窗体的具体情况,你可以自动的增加你所用到的可视控件.
如果,你把上述代码加到你的窗体代码中,你会发现改变了窗体大小后,窗体上的可视控件的大小和位置也会相应的变化 。  
|