想加一段代码,实现当窗体大小发生变化时,窗体中的控件相应的发生变化.我的代码如下:
Option Explicit
Dim mywidth As Single, myheight As SinglePrivate Sub Form_Load()
mywidth = Me.Width
myheight = Me.Height
End SubPrivate Sub Form_Resize()
Dim c As Control
For Each c In Me.Controls
c.Left = c.Left * (Me.Width / mywidth)
c.Top = c.Top * (Me.Height / myheight)
c.Width = c.Width * (Me.Width / mywidth)
c.Height = c.Height * (Me.Height / myheight)
mywidth = Me.Width
myheight = Me.Height
Next
End Sub当我改变窗口大小时,窗口中只有一个控件会相应地改变,就是窗口中最后加入的那个控件,其它的控件都不会发生变化.请高手指点我一下,多谢了.

解决方案 »

  1.   

    1、form_load最好换到form_initialize里边;
    2、Private Sub Form_Resize()
    Dim c As Control
    For Each c In Me.Controls
    c.Left = c.Left * (Me.Width / mywidth)
    c.Top = c.Top * (Me.Height / myheight)
    c.Width = c.Width * (Me.Width / mywidth)
    c.Height = c.Height * (Me.Height / myheight)
    Next
    mywidth = Me.Width
    myheight = Me.Height
    End Sub
      

  2.   

    Private Sub Form_Resize()
    Dim c As Control
    For Each c In Me.Controls
    c.Left = c.Left * (Me.Width / mywidth)
    c.Top = c.Top * (Me.Height / myheight)
    c.Width = c.Width * (Me.Width / mywidth)
    c.Height = c.Height * (Me.Height / myheight)
    '问题出在这儿
    'mywidth = Me.Width
    'myheight = Me.Height
    Nextmywidth = Me.Width
    myheight = Me.HeightEnd Sub
      

  3.   

    再问一下,放到form_load里和放到form_initialize里效果不是一样的吗?
      

  4.   

    Private Sub Form_Resize()
    '这里加一句
    if me.windowstate=1 then exit sub
    '避免最小化的时候出错form_initialize在一个程序里只执行一次,但是form_load会执行多次
      

  5.   

    可以使用resize32.ocx控件呀,放一个上去就行了