如何使对象居中于表单中

时间:2014-07-14 06:05:35

标签: vb.net

我试图简单地将一个面板放在一个表格中。我这样做是使用Object Location = (Container Width - Object Width) / 2的简单公式。这是将对象移动到容器中心(x轴)的简单数学方法。

但是,它无法正常工作。它在左侧放置了大约10个像素的额外空间,我无法弄清楚原因。如果您足够缩小表单的大小,则面板会触及表单的右侧,但距离左侧仍然大约十个像素。

我已经检查过以确保任何边距或填充属性都设置为0,但没有运气。

有人知道为什么会发生这种情况以及如何解决这个问题吗?

这是我的确切代码:

Private Sub Form_Loaded(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    'Center Object
    pnlRadios.Location = New Point((Me.Width - pnlRadios.Width) / 2, 5)
End Sub

更新:我也试过了:

pnlRadios.Location = New Point(Me.Width / 2 - pnlRadios.Width /2 , 5)

pnlRadios.Left = Me.Width / 2 - pnlRadios.Width / 2

并且每次尝试都得到完全相同的结果。

更新2 :我可以通过在公式中添加- 10来进行手动解决方法。它现在居中,但感觉就像我被骗了,我仍然不知道为什么我必须首先做到这一点,我无法弄清楚为什么左侧有某种填充。

1 个答案:

答案 0 :(得分:1)

你试过这个吗?我相信我几年前也遇到过同样的问题。我认为它有这个:

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.desktopbounds(v=vs.110).aspx

显示宽度,可以与表格的实际宽度不同...以像素为单位(也许是主题......谁知道...)

运行此代码......

MsgBox("width = " & Me.Width & vbCrLf & vbCrLf & _ 
"desktopbound width = " &  Me.DisplayRectangle.Width)

编辑:根据OP在下面评论中的澄清,获得实际的"中间"形式,没有边框和装饰:

<强>&#34;

我不想在此包含边框,这解释了我遇到此问题的原因。这有效:

pnlRadios.Location = New Point((Me.DisplayRectangle.Width - pnlRadios.Width) / 2, 5)

<强>&#34;