在窗体上居中(完美)动态创建按钮?

Goa*_*oat 3 vb.net load center button

这是我在这里的第一篇文章,所以我希望我提供所有正确的信息.

我目前正在开发一个简单的菜单应用程序,它具有一个按钮控制数组(使用MSDN建议的控制数组的工作),我很难重新调整表单的大小并使按钮居中.这些按钮是在编译时创建的(使用INI文件中的参数),我当前的居中算法似乎稍微将它们设置为右侧.我正在使用"button.location = new Point(...,...)"方法,但在阅读完之后,它表示值将按钮定位在左上角而不是中心,从而占据右侧的轻微偏移.

我的两个问题是:

如何在编译时将这些按钮完美地置于中心位置?我已经尝试通过减去按钮宽度的一半来计算差异但按钮宽度和点属性似乎不兼容并且按钮得到大量偏移.

而且......重新调整菜单大小的另一个目标是在重新调整大小时让按钮完美展开和收缩.当动态创建按钮时似乎锚定无效,所以我被迫编写比率算法......有没有办法让锚定工作?

这是我在加载中的内容:

 MyControlArray(i).Location = New Point(CInt(((Width - ButtonWidth) / 2) +_
(ButtonWidth / 2)), CInt((Height - MyControlArray(i).Height) / 2))
Run Code Online (Sandbox Code Playgroud)

我已经尝试过了:

New Point(CInt(((Width - ButtonWidth) / 2)), CInt((Height - MyControlArray(i).Height)_
/ 2))
Run Code Online (Sandbox Code Playgroud)

Han*_*ant 7

那是因为你使用了错误的变量,Width和Height包括边框和标题.您应该使用ClientSize属性.像这样:

Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
    MyBase.OnLoad(e)
    Dim btn = New Button()
    Controls.Add(btn)
    btn.Location = New Point((ClientSize.Width - btn.Width) \ 2, _
                             (ClientSize.Height - btn.Height) \ 2)
End Sub
Run Code Online (Sandbox Code Playgroud)