各位大俠好,我借助在網上找的如下代碼實作控制元件隨視窗大小改變功能,但是發現如下問題,向各位請教
我將如下代碼放到每個mdi視窗中,已最大化方式打開第一個mdi視窗沒問題,再已最大化方式打開第二個mdi視窗控制元件不能鋪滿,還是正常設計時候大小,關閉再打開也不好用,應該如何解決呢,謝謝
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.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)
'如果是容器控制元件,則遞回繼續縮放
If con.Controls.Count > 0 Then
setControls(newx, newy, con)
End If
Next
End Sub
Private Sub Form_Resize(sender As Object, e As EventArgs) Handles MyBase.Resize
Try
'得到現在表單的大小,然后根據原始大小計算縮放比例
'MsgBox(CStr(Me.Width) & "-" & CStr(Me.Height))
Dim newx As Single = Me.Width / x
Dim newy As Single = Me.Height / y
setControls(newx, newy, Me)
Catch ex As Exception
End Try
End Sub
Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'控制元件隨視窗大小調整
x = Me.Width
y = Me.Height
setTag(Me)
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/68188.html
標籤:VB.NET
下一篇:自動化測驗平臺
