よく知りたいのは、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を使うことです。また
、あなたがコントロール内のコントロール(タブページ、グループボックスなど)を持っている場合は、それらすべてを見つけるために再帰を使用する必要があります - のようなもの:
あなたのような上記の機能を使用することになり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
また、回答を受け入れると、おそらく人々があなたを助けてくれるでしょう。