如何在C#中调整窗口大小时保持对象位置不变

14

当窗口大小改变时,如何保持窗口中的对象(例如按钮、标签等)居中?

目前,我在Windows表单中有3个按钮。当我最大化窗口时,按钮仍停留在窗口的左上角。我希望它们像在窗口未最大化时一样位于中心位置。

有什么帮助吗?


如果不需要,您可以禁用“最大化”选项... :) - Viral Jain
4个回答

31

您应该将对象的锚定属性设置为 none

这将使其保持在中间位置。


除了水平居中保持对象外,如果您还需要在垂直扩展窗口时将对象保持在屏幕底部,则将锚点设置为底部而不是无。 - Quan

4

正确设置控件的Anchor属性。默认情况下,控件会锚定到Top,Left。如果清除此属性(即不锚定任何内容),您的按钮将保持居中。

(看起来好像需要将控件锚定在四个方向,但实际上这将会调整您的按钮大小以填充整个表单!)


我做到了。谢谢。但是它没有调整按钮的大小。当我最大化窗口时,按钮的大小与之前相同。有没有办法让按钮按比例增加大小? - HelmBurger
如果您将Anchor设置为Top, Left, Bottom, Right,则按钮将随着窗体的大小调整而调整大小,但它不会保持与窗体相同的比例(也就是说,它将按照与窗体相同数量的像素进行调整)。如果您想将按钮的大小保持为窗体大小的固定百分比,则需要手动编写代码。 - Dan Puzey

4
保持布局固定并居中,请按以下步骤进行:
  1. 在您的表单上添加 TableLayoutPanel
  2. 将其 Dock 属性设置为 Fill
  3. 创建 3 行和 3 列。
  4. 编辑行和列 - 将第一列和最后一列以及第一行和最后一行设置为 50%。
  5. 为中间行和列设置固定大小。
  6. Panel 或其他任何您喜欢的内容放置在第二行和第二列中。它会始终位于中央。

0
如果您正在使用Visual Studio的可视化设计器(而且您没有理由不使用),则您要管理控件放置在表单中的属性是“Anchor”。 默认情况下,当您创建一个新控件时,它被设置为“左上角”,这意味着它们将保持在表单的左上角的固定位置。您可以更改它以将其锚定到任何内容。
您还可以通过覆盖表单的Resize方法来禁用锚点并控制它们的位置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接