0
我想知道有沒有什麼方法可以放大我的表單在vb.net。 我可以調整窗體大小,並將所有控件固定到左上方右上角,我可以使它看起來像縮放。但它實際上並沒有縮放。它正在調整大小。而字體大小和其他格式仍然相同。我可以縮放窗體,而它是活動的
也看看有沒有人能回答我一個問題..
我想知道有沒有什麼方法可以放大我的表單在vb.net。 我可以調整窗體大小,並將所有控件固定到左上方右上角,我可以使它看起來像縮放。但它實際上並沒有縮放。它正在調整大小。而字體大小和其他格式仍然相同。我可以縮放窗體,而它是活動的
也看看有沒有人能回答我一個問題..
沒有,有放大這樣的,據我所知,沒有簡單的方法。特別是字體有一個固定的方面,所以如果你正在任意地調整你的表單的大小,你不能輕易地使它們變得更高或更寬。
您可以強制調整大小但保持其寬高比,然後你可以遞歸遍歷所有的控件,確定其類型和形式的Resize事件適當縮放它們 - 即:
Public Class Form1
Private lblSize As Single
Private Fwid As Integer
Private Fheight As Integer
Private Sub Form1_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
Me.Height = Fheight * Me.Width/Fwid
For Each ctl In Me.Controls
If TypeOf ctl Is Label Then
Dim lbl As Label = DirectCast(ctl, Label)
Dim nFont As New Font(FontFamily.GenericSansSerif, lblSize * Me.Width/Fwid, FontStyle.Regular, GraphicsUnit.Point)
lbl.Font = nFont
End If
Next
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Fwid = Me.Width
Fheight = Me.Height
lblSize = Label1.Font.Size
End Sub
End Class
您必須爲您使用的每種控制類型執行此操作。我只在這裏做過字體大小,但你也必須調整位置等。重繪在這不會很漂亮,但它會工作。一個更好的選擇可能是使用WPF,它有更多的工具可用於做這種事情。
另外,如果你有控制中的控件(標籤頁,groupboxes等),你必須使用遞歸來找到他們 - 是這樣的:
Public Shared Function GetAllControlsRecurs(ByVal list As List(Of Control), ByVal parent As Control, ByVal ctrlType As System.Type) As List(Of Control)
If Parent Is Nothing Then Return list
If Parent.GetType Is ctrlType Then
list.Add(Parent)
End If
For Each child As Control In Parent.Controls
GetAllControlsRecurs(list, child, ctrlType)
Next
Return list
End Function
,你會用上面的功能,如:
Dim buttonList As New List(Of Control)
Dim checkboxList As New List(Of Control)
'etc...
For Each ctl As Button In GetAllControlsRecurs(buttonList, Me, GetType(Button))
' Do something...
Next
For Each ctl As CheckBox In GetAllControlsRecurs(checkboxList, Me, GetType(CheckBox))
' Do Something...
Next
另外 - 接受答案可能會鼓勵人們來幫助你。