2012-03-20 20 views
0

我想知道有沒有什麼方法可以放大我的表單在vb.net。 我可以調整窗體大小,並將所有控件固定到左上方右上角,我可以使它看起來像縮放。但它實際上並沒有縮放。它正在調整大小。而字體大小和其他格式仍然相同。我可以縮放窗體,而它是活動的

也看看有沒有人能回答我一個問題..

https://stackoverflow.com/questions/9749877/need-help-doesnt-printform-work-well-on-painted-objects-or-forms

回答

0

沒有,有放大這樣的,據我所知,沒有簡單的方法。特別是字體有一個固定的方面,所以如果你正在任意地調整你的表單的大小,你不能輕易地使它們變得更高或更寬。

您可以強制調整大小但保持其寬高比,然後你可以遞歸遍歷所有的控件,確定其類型和形式的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 

另外 - 接受答案可能會鼓勵人們來幫助你。

相關問題