日期:2014-05-17  浏览次数:21498 次

C# winform 控件定位随着窗体的变化而变化
目前的窗体为
我最大化后的窗体为


现在是里面的图标根本就没有等比例改为显示位置,加急求解,在线等!!!谢谢高手助解决此问题!!!

------解决方案--------------------

Public Class Form1
    Dim x As Single = 0
    Dim y As Single = 0
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '得到原始窗体大小
        x = Me.Width
        y = Me.Height
        setTag(Me)
    End Sub
    Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
        '得到现在窗体的大小,然后根据原始大小计算缩放比例
        Dim newx As Single = Me.Width / x
        Dim newy As Single = Me.Height / y
        setControls(newx, newy, Me)
    End Sub
    '递归取控件的原始大小和位置,用tag来纪录
    Private Sub setTag(ByVal obj As Object)
        For Each con As Control In obj.Controls
            con.Tag = con.Width & ":" & con.Height & ":" & con.Left & ":" & con.Top & ":" & con.Font.Size
            '如果是容器控件,则递归继续纪录
            If con.Controls.Count > 0 Then
                setTag(con)
            End If
        Next
    End Sub
    '递归重新设定控件的大小和位置
    Private Sub setControls(ByVal newx As Single, ByVal newy As Single, ByVal obj As Object)
        For Each con As Control In obj.Control