1

我正在向这样的表单添加控件

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 面板移动到底部。

add btn 面板正确移动,但添加的新控件被添加,但该位置似乎将它与前一个控件的间隙差加倍。

如果我在每次添加后输出它们,这就是位置

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 有效。

4

1 回答 1

0

这更像是一种黑客攻击,但它有效。

sharpUserX.Size = sharpUserSize
PnlSharpUsers.Controls.Add(sharpUserX)
sharpUserX.Location = pnlAddBtn.Location

如果我在添加控件之前设置大小,然后在似乎将字体缩放应用于大小而不是位置之后设置位置,这对我来说非常有效。

于 2013-08-20T10:21:56.617 回答