C# 如何将标签或按钮准确地放置在窗体的中间? < >我找不到工具或属性来将标签或按钮准确地放置在窗体的中间。例如,在X轴上。VS 2015

C# 如何将标签或按钮准确地放置在窗体的中间? < >我找不到工具或属性来将标签或按钮准确地放置在窗体的中间。例如,在X轴上。VS 2015,c#,winforms,button,visual-studio-2015,label,C#,Winforms,Button,Visual Studio 2015,Label,设计时间: 在VisualStudio2010中,我有以下两个按钮用于水平和垂直居中: 它位于工具栏“布局”中。如果不是,您可以通过单击右侧的小按钮来添加它们。它也在“格式”菜单中 要在运行时保持居中,请关闭所有锚定 注意:这将使控件保持在其相对位置,只要它不改变其大小。如果出现这种情况,如autosize标签,则必须对Resize事件进行编码。例如对于可能改变大小的控件,您需要捕获调整大小事件 在我的例子中,我有一个面板,代表一个页面,在另一个面板(即工作区)中。工作区设置为自动滚动。在这种

设计时间:

在VisualStudio2010中,我有以下两个按钮用于水平和垂直居中:

它位于工具栏“布局”中。如果不是,您可以通过单击右侧的小按钮来添加它们。它也在“格式”菜单中

要在运行时保持居中,请关闭所有锚定


注意:这将使控件保持在其相对位置,只要它不改变其大小。如果出现这种情况,如autosize
标签
,则必须对
Resize
事件进行编码。例如

对于可能改变大小的控件,您需要捕获调整大小事件

在我的例子中,我有一个面板,代表一个页面,在另一个面板(即工作区)中。工作区设置为自动滚动。在这种情况下,重要的是控件只有在小于容器时才居中

每当表单改变大小或我改变内容时,我调用此函数:

private void resetPagePos()
{
  int wWS = pnlWorkspace.Width;
  int hWS = pnlWorkspace.Height;

  int wPage = pnlPage.Width;
  int hPage = pnlPage.Height;

  pnlPage.Location = new Point(Math.Max(0, (wWS - wPage) / 2), pnlPage.Top = Math.Max(0, (hWS - hPage) / 2));
}

使用Math.Max(0,…)可以确保如果项目不适合,并且滚动条被激活,那么我们的页面就会正确滚动。如果将左侧或顶部设置为负数,则会产生不必要的副作用。

使用IDE或使用代码?可能与@**Casiosmu**重复,您将我引向了正确的方向。在VS2015-->格式-->表格中居中->垂直/水平。另外,什么是一个扭曲的论坛引擎!很难找到谁、何时何地回答你的问题。((我也有,但当你在表单字段中对齐至少两个组件时,它们就会激活。而不是表单本身和组件。这就是问题所在!我在当前VS com中没有它们。它们属于哪里?@TaW Toolbar“Layout”啊,我不得不添加它们,因为它们在默认情况下不显示。请编辑您的帖子以包含此信息(同时我也可以从-1到+1!)在Visual Studio 2019中,我必须启用布局工具栏,然后单击工具栏上的“添加或删除按钮”,并启用“水平居中”和“垂直居中”查看本文中提到的按钮。有趣的是,默认情况下不显示这两个选项。