.net 锚不起作用
情况: 在表单中,我有一个TableLayoutPanel(Dock=Fill)和一个标签(父级是表单,而不是TableLayoutPanel),其锚定设置为Top+Bottom+Left+Right 现在,当我运行这个表单并将其重新zise时,标签不会像我预期的那样在表单中居中.net 锚不起作用,.net,winforms,.net,Winforms,情况: 在表单中,我有一个TableLayoutPanel(Dock=Fill)和一个标签(父级是表单,而不是TableLayoutPanel),其锚定设置为Top+Bottom+Left+Right 现在,当我运行这个表单并将其重新zise时,标签不会像我预期的那样在表单中居中 解决方法?您将标签autosize设置为true-我很确定这就是导致问题的原因 将其更改为false。您已将标签autosize设置为true-我很确定这就是导致问题的原因 将其更改为false。必须设置为false
解决方法?您将标签autosize设置为true-我很确定这就是导致问题的原因
将其更改为false。您已将标签autosize设置为true-我很确定这就是导致问题的原因
将其更改为false。必须设置为false。必须设置为false。在多个角点上设置锚定将尝试调整标签大小,除非仅将一个角点设置为锚定 如果将
AutoSize
设置为false
并将标签上的TextAlign
更改为MiddleCenter
,则文本将保持居中,但这可能是不需要的,因为标签尺寸会发生变化
解决方法是捕获表单的Resize
事件,并手动设置标签的位置(未测试)。这意味着您不需要将AutoSize
设置为false,也不需要设置锚定
void OnResize(object sender, EventArgs e)
{
Point pos = new Point((this.Width/2) - (Label.Width / 2),
(this.Height/2) - (Label.Height/2));
Label.Location = pos;
}
在多个角点上设置锚定将尝试调整标签的大小,除非仅将1个角点设置为锚定
如果将AutoSize
设置为false
并将标签上的TextAlign
更改为MiddleCenter
,则文本将保持居中,但这可能是不需要的,因为标签尺寸会发生变化
解决方法是捕获表单的Resize
事件,并手动设置标签的位置(未测试)。这意味着您不需要将AutoSize
设置为false,也不需要设置锚定
void OnResize(object sender, EventArgs e)
{
Point pos = new Point((this.Width/2) - (Label.Width / 2),
(this.Height/2) - (Label.Height/2));
Label.Location = pos;
}
设置Anchor
属性会导致控件尝试与指定边保持恒定距离。因此,如果缩小表单,标签仍将保持与顶部
和左侧
的距离,因此不应保持居中
实际上,我认为如果希望标签保持居中,应该将其锚定属性设置为无
,而不是上、下、左、右
现在,如果您要更改标签的文本,这里有一个折衷方案:
将标签的Anchor
属性设置为None
。这将使它保持居中
将标签的AutoSize
属性设置为false
。这将允许您指定一个恒定的大小
将标签的大小设置为远远大于要显示的任何文本所需的大小。将结果“膨胀标签”放在表单的中心
将标签的TextAlign
属性设置为MiddleCenter
实际上,它提供的是一个在表单中始终居中的矩形,其中有一些文本始终居中于该矩形内。设置锚定
属性会使控件尝试与指定的边保持恒定的距离。因此,如果缩小表单,标签仍将保持与顶部
和左侧
的距离,因此不应保持居中
实际上,我认为如果希望标签保持居中,应该将其锚定属性设置为无
,而不是上、下、左、右
现在,如果您要更改标签的文本,这里有一个折衷方案:
将标签的Anchor
属性设置为None
。这将使它保持居中
将标签的AutoSize
属性设置为false
。这将允许您指定一个恒定的大小
将标签的大小设置为远远大于要显示的任何文本所需的大小。将结果“膨胀标签”放在表单的中心
将标签的TextAlign
属性设置为MiddleCenter
实际上,这给你的是一个始终居中于表单中心的矩形,其中一些文本始终居中于该矩形内。我认为它根本不会居中。
调整窗体大小时,只有右侧和底部会移动,因此,如果在所有4条边上都有锚定,则只有标签(或任何控件)的右侧和底部会随之移动,而左侧和顶部不会移动 我认为它根本不会以自己为中心。
调整窗体大小时,只有右侧和底部会移动,因此,如果在所有4条边上都有锚定,则只有标签(或任何控件)的右侧和底部会随之移动,而左侧和顶部不会移动 诀窍是在标签上没有锚。由于锚定将尝试保持与边缘的距离,因此您的设置将导致标签随窗体增长。不幸的是,这将与自动调整大小设置冲突,自动调整大小设置将希望保持标签的大小相同
通过没有锚定,标签可以自由移动,而不是调整大小,并且它将保持与表单边缘成比例的正确距离。诀窍是在标签上没有锚定。由于锚定将尝试保持与边缘的距离,因此您的设置将导致标签随窗体增长。不幸的是,这将与自动调整大小设置冲突,自动调整大小设置将希望保持标签的大小相同
通过没有锚定,标签可以自由移动,而不是调整大小,并且它将保持与表单边缘成比例的正确距离。将锚定设置为无。这对我有效。将你的锚定设置为None
。这对我很管用。但是,如果我更改文本,它就会变得不居中。@serhio:我明白了。T