このようなフォームにコントロールを追加しています
Dim sharpUserX As New SharpUser()
Dim y As Integer = 0
For Each con As Control In PnlSharpUsers.Controls
If TypeOf(con) is SharpUser then ' as i have the pnaddbtn, which i move to the bottom below
If y < con.Bottom Then y = con.Bottom
End If
Next
sharpUserX.Location = New Point(2, y)
'sharpUserX.Location = pnlAddBtn.location 'this does that exact same
sharpUserX.Size = sharpUserSize
PnlSharpUsers.Controls.Add(sharpUserX)
'put add button back on
pnlAddBtn.Location = New Point(pnlAddBtn.Left, sharpUserX.Bottom) 'strangely this is always correct
これはボタンを押すと呼び出され、ShrpUser コントロールがパネルに追加され、addbtn パネルが下部に移動します。
追加ボタン パネルは正しく移動しますが、追加された新しいコントロールは追加されますが、その場所は前のコントロールとのギャップの差の 2 倍のようです。
追加するたびに出力した場合の場所は次のとおりです
1 added
loc={X=2,Y=0} size={Width=849, Height=117}
2nd added
loc={X=2,Y=0} size={Width=849, Height=117}
loc={X=2,Y=135} size={Width=849, Height=117}
3rd added
loc={X=2,Y=0} size={Width=849, Height=117}
loc={X=2,Y=135} size={Width=849, Height=117}
loc={X=2,Y=291} size={Width=849, Height=117}
2 の y は 117 で、3 の y は 234 である必要があります。フォームはフォントによってスケーリングされます。これが原因だと思っていますが、何をすべきかわかりませんし、pnladdBtn が機能する理由も理解できません。