如何将标签或按钮准确地放置在表单的中间?
How to place a label or a button exactly in the middle of the Form?
我找不到工具或属性来将标签或按钮准确地放置在表单的中间。例如,在 X 轴上。对比 2015.
设计时间:
在我的 VisualStudio2010 中,我将这两个按钮水平和垂直居中:
它位于工具栏中 "Layout"。如果不是,您可以通过单击右侧的小按钮来添加它们。它也在“格式”菜单中。
要在运行时保持居中:关闭所有锚定。
注意:这将使控件保持在其相对位置,只要它不改变它的大小。如果是这样,就像 autosize Labels
容易发生的那样,您将不得不编写 Resize
事件。例如 here
对于可能会改变大小的控件,您需要捕获 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, ...) 确保如果项目不适合,并且滚动条被激活,那么我们的页面正确滚动。如果 Left 或 Top 设置为负数,您会得到不需要的副作用。
我找不到工具或属性来将标签或按钮准确地放置在表单的中间。例如,在 X 轴上。对比 2015.
设计时间:
在我的 VisualStudio2010 中,我将这两个按钮水平和垂直居中:
它位于工具栏中 "Layout"。如果不是,您可以通过单击右侧的小按钮来添加它们。它也在“格式”菜单中。
要在运行时保持居中:关闭所有锚定。
注意:这将使控件保持在其相对位置,只要它不改变它的大小。如果是这样,就像 autosize Labels
容易发生的那样,您将不得不编写 Resize
事件。例如 here
对于可能会改变大小的控件,您需要捕获 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, ...) 确保如果项目不适合,并且滚动条被激活,那么我们的页面正确滚动。如果 Left 或 Top 设置为负数,您会得到不需要的副作用。