我的窗体上有一个text,窗体在运行时是最大化 ,有什么办法可以让text也和外面的窗体一起变化!!

解决方案 »

  1.   

    在窗体的Resize事件里根据窗体大小和你的要求来改变Text的大小呀!
      

  2.   


    Resize 事件
          当一个对象第一次显示或当一个对象的窗口状态改变时该事件发生。(例如,一个窗体被最大化、最小化或被还原。)语法Private Sub Form_Resize( )Private Sub object_Resize(height As Single, width As Single)Resize 事件语法包括下列部分:部分 描述 
    object 一个对象表达式,其值是“应用于”列表中的一个对象。 
    height 指定控件新高度的数。 
    width 指定控件新宽度的数。 
    说明当父窗体调整大小时,可用 Resize 事件过程来移动控件或调整其大小。也可用此事件过程来重新计算那些变量或属性,如:ScaleHeight 和 ScaleWidth 等,它们取决于该窗体的尺寸。如果在调整大小时想要保持图形的大小与窗体的大小成比例,可在一个 Resize 事件中通过使用 Refresh 方法调用 Paint 事件。任何时候只要 AutoRedraw 属性被设置为 False 而且窗体被调整大小,Visual Basic 也会按 Resize 和 Paint 的顺序调用相关的事件。当给这些相关事件附加过程时,要确保它们的操作不会互相冲突。当一个 OLE 容器控件的 SizeMode 属性被设置为 2(自动调大小)时,该控件自动根据所显示的包含于该控件之中的对象的大小来调整其大小。如果所显示的对象的大小发生变化,则该控件自动重调其大小以适应该对象的变化。当这种情况出现时,为该对象调用 Resize 事件会在 OLE 容器控件被重调大小之前发生。height 和 width 部分指示该对象显示的最佳大小(这个尺寸由创建该对象的应用程序决定)。可通过在 Resize 事件中改变 height 和 width 部分的值来按不同的尺寸设定控件的大小。Resize 事件示例
    本例在任何调整窗体大小时的时候,都将自动调整一个 TextBox 控件的大小以填充该窗体。要尝试这个例子,可以将代码粘贴到包含 TextBox 的窗体声明部分。 设置 TextBox 控件的 MultiLine 属性为 True,ScrollBars 属性为 3,BorderStyle 属性为 0,然后按F5键并调整窗体大小。Private Sub Form_Load ()
       Text1.Text = ""   ' 清除文本。
    End SubPrivate Sub Form_Resize ()
       Text1.Move 0,0, ScaleWidth, ScaleHeight
    End Sub
      

  3.   

    Dim CtrlTmp as Control
    For Each CtrlTmp in Form1.Controls
       If Typeof CtrlTmp is TextBox then
            if CtrlTmp.Name="Text1" then 
               CtrlTmp.Width=me.Width/5
               CtrlTmp.Height=me.Width/2  
            end if
       End If   
    Next CtrolTmp
    以上代码加入Resise事件中
      

  4.   

    Public FormOldWidth, FormOldHeight As Long
    Private Sub Form_Load()
    Dim obj As Control
     FormOldWidth = Form1.ScaleWidth
     FormOldHeight = Form1.ScaleHeight
    For Each obj In Form1
       obj.Tag = obj.Left & " " & obj.Top & " " & obj.Width & " " & obj.Height & " "
     Next objEnd SubPrivate Sub Form_Resize()
    Dim ScaleX As Double, ScaleY As Double
      Dim i As Long, TempPos As Long, StartPos As Long
     Dim Pos(4) As Double ScaleX = Form1.ScaleWidth / FormOldWidth
     ScaleY = Form1.ScaleHeight / FormOldHeight
     
    Dim obj As Control
     For Each obj In Form1
       StartPos = 1
       
       For i = 0 To 4
         TempPos = InStr(StartPos, obj.Tag, " ", vbTextCompare)
         If TempPos > 0 Then
           Pos(i) = Mid(obj.Tag, StartPos, TempPos - StartPos)
           StartPos = TempPos + 1
         Else
           Pos(i) = 0
         End If
         
         obj.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
       
       Next i
     Next objEnd Sub添加一个控件,全部复制即可