Public Class Form1
Dim x As Single = 0
Dim y As Single = 0
Private Sub frmDl_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
x = Me.Width
y = Me.Height
setTag(Me)
Me.WindowState = FormWindowState.Maximized
End Sub
'遞歸取控件的原始大小和位置,用tag來紀(jì)錄
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
'如果是容器控件,則遞歸繼續(xù)紀(jì)錄
If con.Controls.Count > 0 Then
setTag(con)
End If
Next
End Sub
'遞歸重新設(shè)定控件的大小和位置
Private Sub setControls(ByVal newx As Single, ByVal newy As Single, ByVal obj As Object)
For Each con As Control In obj.Controls
con.AutoSize = False
Dim mytag() As String = con.Tag.ToString.Split(":")
con.Width = mytag(0) * newx
con.Height = mytag(1) * newy
con.Left = mytag(2) * newx
con.Top = mytag(3) * newy
'計算字體縮放比例,縮放字體
Dim currentSize As Single = (mytag(1) * newy * mytag(4)) / mytag(1)
con.Font = New Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit)