在usercontrol_resize事件中重排子控件

解决方案 »

  1.   

    Private Sub UserControl_Resize()
        Dim w As Long, h As Long
            
        w = UserControl.Width
        h = UserControl.Height
        
        With picContainer
            .Top = 0
            .Left = 0
            .Width = w
            .Height = h
        End With
        
        With picSubTitle
            .Top = 0
            .Left = 0
            .Width = w
        End With
        
        With LvwEmployee
             .Top = picSubTitle.Top + picSubTitle.Height + 15
             .Left = 0
             .Width = w
             .Height = h - .Top
        End With
      
           
    End Sub
      

  2.   

    随着usercontrol大小的变化而变化不笼统吗?
      

  3.   

    放置一个IMAGE或LABEL控件作为对比在拖动的时候计算它们,你试一试
      

  4.   

    刚找到一篇文章,转贴出来看看是不是有用:   控件随窗体大小而变化'----当窗体大小改变时,如何动态的改变控件的大小是许多VB程序员头痛的
    '事。有的人设置窗体Resizable但却不改变控件的大小;有的人则根据控件的
    '绝对位置与窗口大小相加减的办法来重新定位控件与改变大小,这种办法比
    '较繁琐,且不可重用;当然也有人则限定窗口干脆不让改变。有没有一种简
    '便易行的办法?答案是肯定的,下面给出一个一劳永逸的办法,源程序如下:Option Explicit
    Private FormOldWidth As Long
    '保存窗体的原始宽度
    Private FormOldHeight As Long
    '保存窗体的原始高度'在调用ResizeForm前先调用本函数
    Public Sub ResizeInit(FormName As Form)
    Dim Obj As Control
    FormOldWidth = FormName.ScaleWidth
    FormOldHeight = FormName.ScaleHeight
    On Error Resume Next
    For Each Obj In FormName
    Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " "
    Next Obj
    On Error GoTo 0
    End Sub'按比例改变表单内各元件的大小,
    '在调用ReSizeForm前先调用ReSizeInit函数
    Public Sub ResizeForm(FormName As Form)
    Dim Pos(4) As Double
    Dim i As Long, TempPos As Long, StartPos As Long
    Dim Obj As Control
    Dim ScaleX As Double, ScaleY As DoubleScaleX = FormName.ScaleWidth / FormOldWidth
    '保存窗体宽度缩放比例
    ScaleY = FormName.ScaleHeight / FormOldHeight
    '保存窗体高度缩放比例
    On Error Resume Next
    For Each Obj In FormName
    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 Obj
    On Error GoTo 0
    End SubPrivate Sub Form_Load()
    Call ResizeInit(Me) '在程序装入时必须加入
    End SubPrivate Sub Form_Resize()
     Call ResizeForm(Me) '确保窗体改变时控件随之改变
    End Sub'----本例中给出了二个函数:ResizeInit和ResizeForm,在调用ResizeForm之前
    '必须先调用ResizeInit。你可以将本程序拷到窗体代码段里,然后在窗体里加
    '入任意控件即可进行测试。
           以上代码来自: 源代码数据库(SourceDataBase)
               当前版本: 1.0.539
                   作者: Shawls
               个人主页: Http://Shawls.Yeah.Net
                 E-Mail: [email protected]
                     QQ: 9181729
      

  5.   

    记住,我现在是在编ACTIVEX控件,是为了让USERCONTROL中的控件随着USERCONTROL大小的改变而改变??
      

  6.   

    我上面说的就是usercontrol,你有什么特殊的要求,或不明白的地方说清楚一些。