私は、フォームのForm.Paint
イベントを処理して、コントロールのサイズと位置を計算/調整します。これは最もクリーンでシンプルなソリューションではありませんので、可能であれば、組み込みのレイアウトコントロールを実際に動作させるようにしてください。フォームのアスペクト比が変更された場合、あなたのレイアウトが文句を言わないので、解明
Private Sub MyForm_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
Try
'get height of title
Dim titleHeight As Integer = RectangleToScreen(parent.ClientRectangle).Top - parent.Top
'set paddingTop to height of title + height of menustrip(if you have one) + 10px(can be whatever you want) padding
Dim paddingTop As Integer = titleHeight + parent.MenuStrip1.Height + 10
REM Adjust controls sized to scale based on new form size
PictureBox1.Size = New Size(CInt(Width/4), CInt(Height/2))
PictureBox1.Location = New Point(CInt(Width/4 + PictureBox1.Width/2), paddingTop)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
End Sub
はもちろん、あなたが親フォームに対するあなたのコントロールの規模や場所を知っている必要があります。また、このような問題を回避するには、親フォームの最小サイズを考慮する必要があります。 Form.SizeChanged
を処理してコードの実行回数を減らすこともできますが、十分ではないシナリオが発生しました。
C#/ Winformsについて話していますか?あなたの質問は少し不明で、コードは表示されません。 –
ピーナッツより複雑なものについては、[TableLayoutPanel](https://msdn.microsoft.com/en-us/library/h21wykkx(v=vs.110).aspx)コンテナを組み込むことをお勧めします。 –
@Ransomどのようなコードを見たいですか? – Sam