情况: alt text http://lh4.ggpht.com/_1TPOP7DzY1E/S-1xy6gvB0I/AAAAAAAADNc/RRH5DpGnics/s800/Capture1.png
在表单中,我有一个TableLayoutPanel(Dock = Fill)和一个标签(父级是Form,而不是tablelayoutPanel),其中的锚点设置为Top + Bottom + Left + Right。
现在,当我运行此表单并重新设置它时,标签不会像我预期的那样在表单中居中。
变通?
答案 0 :(得分:3)
在多于1个角上设置锚点将尝试调整标签大小,除非您只设置1个角来锚定到。
如果您将AutoSize
设置为false
并将标TextAlign
更改为MiddleCenter
,则文字将保持居中,但这可能不合适,因为标签尺寸会改变。
解决方法是捕获Resize
的{{1}}事件,并手动设置标签的位置(未测试)。这意味着您不需要将Form
设置为false,也不需要设置锚点。
AutoSize
答案 1 :(得分:2)
诀窍是标签上没有锚点。由于锚点会尝试与边缘保持距离,因此您的设置将使标签随着表单一起增长。不幸的是,这将与AutoSize设置冲突,后者希望保持标签的大小相同。
通过没有锚点,标签可以自由地移动而不是调整大小,并且它将与表格边缘保持成比例的正确距离。
答案 2 :(得分:1)
你将标签autosize设置为true - 我很确定这是造成问题的原因。
将其更改为false。
答案 3 :(得分:1)
设置Anchor
属性会导致控件尝试与指定边保持恒定距离。因此,如果缩小表单,标签仍会保持与Top
和Left
的距离,因此不应保持居中。
我实际上认为,如果您希望标签保持居中,则应将其Anchor
属性设置为 None
,将不设置为{ {1}}。
现在,如果你要更改标签的文字,这是妥协:
Top, Bottom, Left, Right
属性设置为Anchor
。这将使其保持中心。None
属性设置为 AutoSize
。这将允许您指定常量。false
属性设置为TextAlign
。实际上,这给你的是一个总是以你的形式居中的矩形,其中一些文本始终位于该矩形的中心。
答案 4 :(得分:0)
您必须将AutoSize
设置为false。
答案 5 :(得分:0)
我认为它根本不会占据中心位置。 当您调整表单大小时,只有右侧和底部会移动,因此如果您的所有4个侧面都有锚点,那么标签(或任何控件)的右侧和底部将会跟随,并且左侧和顶部单独留下。