【问题标题】:How to place a label or a button exactly in the middle of the Form?如何将标签或按钮准确地放置在表单的中间?
【发布时间】:2018-10-12 08:30:03
【问题描述】:

我找不到将标签或按钮准确放置在表单中间的工具或属性。例如,在 X 轴上。与 2015 年相比。

【问题讨论】:

  • 使用IDE还是使用代码?
  • @**Casiosmu**,你指引我正确的方向。在 VS2015 中 --> 格式 --> 表格居中 -> 垂直/水平。附言什么是歪曲的论坛引擎!很难知道谁、何时何地回答了你。(((

标签: c# winforms button visual-studio-2015 label


【解决方案1】:

设计时间:

在我的 VisualStudio2010 中,我有这 2 个按钮可以水平和垂直居中:

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

要以运行时为中心:关闭所有锚定。

注意:这将使控件保持在其相对位置,只要它不改变它的大小。如果确实如此,就像自动调整大小 Labels 一样,您将不得不编写 Resize 事件。例如here

【讨论】:

  • 我也有,但是当您要在表单字段中对齐至少两个组件时,它们会变得活跃。不是 Form 本身和组件。这就是重点!
  • 我在当前的 VS com 中没有它们。他们属于哪里?
  • @TaW 工具栏“布局”
  • 啊,我不得不添加它们,因为它们默认不显示。请编辑您的帖子以包含此信息(这样我就可以从 -1 变为 +1!)
  • 在 Visual Studio 2019 中,我必须启用布局工具栏,然后单击工具栏上的“添加或删除按钮”并启用“水平居中”和“垂直居中”才能看到本文中提到的按钮.有趣的是,这两个选项默认不显示。
【解决方案2】:

对于大小可能发生变化的控件,您需要捕获 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 设置为负数,则会产生不必要的副作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-18
    • 2020-01-18
    • 1970-01-01
    • 2021-12-27
    • 2015-04-02
    • 1970-01-01
    • 2018-05-29
    • 2021-03-24
    相关资源
    最近更新 更多