锚不起作用

时间:2010-05-14 15:58:08

标签: .net winforms

情况: alt text http://lh4.ggpht.com/_1TPOP7DzY1E/S-1xy6gvB0I/AAAAAAAADNc/RRH5DpGnics/s800/Capture1.png

在表单中,我有一个TableLayoutPanel(Dock = Fill)和一个标签(父级是Form,而不是tablelayoutPanel),其中的锚点设置为Top + Bottom + Left + Right。

现在,当我运行此表单并重新设置它时,标签不会像我预期的那样在表单中居中。

变通?

6 个答案:

答案 0 :(得分:3)

在多于1个角上设置锚点将尝试调整标签大小,除非您只设置1个角来锚定到。

如果您将AutoSize设置为false并将标TextAlign更改为MiddleCenter,则文字将保持居中,但这可能不合适,因为标签尺寸会改变。

解决方法是捕获Resize的{​​{1}}事件,并手动设置标签的位置(未测试)。这意味着您不需要将Form设置为false,也不需要设置锚点。

AutoSize

答案 1 :(得分:2)

诀窍是标签上没有锚点。由于锚点会尝试与边缘保持距离,因此您的设置将使标签随着表单一起增长。不幸的是,这将与AutoSize设置冲突,后者希望保持标签的大小相同。

通过没有锚点,标签可以自由地移动而不是调整大小,并且它将与表格边缘保持成比例的正确距离。

答案 2 :(得分:1)

你将标签autosize设置为true - 我很确定这是造成问题的原因。

将其更改为false。

答案 3 :(得分:1)

设置Anchor属性会导致控件尝试与指定边保持恒定距离。因此,如果缩小表单,标签仍会保持与TopLeft的距离,因此不应保持居中。

我实际上认为,如果您希望标签保持居中,则应将其Anchor属性设置为 None ,将设置为{ {1}}。

现在,如果你要更改标签的文字,这是妥协:

  1. 将标签的Top, Bottom, Left, Right属性设置为Anchor。这将使其保持中心。
  2. 将标签的None属性设置为 AutoSize 。这将允许您指定常量。
  3. 将标签的大小设置为远大于您要显示的任何文本所需的大小。在您的表单上居中显示“膨胀的标签”。
  4. 将标签的false属性设置为TextAlign
  5. 实际上,这给你的是一个总是以你的形式居中的矩形,其中一些文本始终位于该矩形的中心。

答案 4 :(得分:0)

您必须将AutoSize设置为false。

答案 5 :(得分:0)

我认为它根本不会占据中心位置。 当您调整表单大小时,只有右侧和底部会移动,因此如果您的所有4个侧面都有锚点,那么标签(或任何控件)的右侧和底部将会跟随,并且左侧和顶部单独留下。