在设计时,我已经将Anchor属性用于某些控件。
但是,当我在运行时更改这些控件的.Top属性时,似乎它与Anchor属性混淆了,不再使用它了。
怎么了?怎么修?
最佳答案
我试图重现您描述的问题,但无法完全匹配它。但是,以下示例可以帮助您解决我怀疑遇到的问题。
(我的雇主阻止了i.imgur.com(SO的图像主机)。如果您在查看屏幕截图时遇到任何问题,请告诉我。)
下面的简单表单包含一个在其父表单的所有四个侧面均锚定的组框。
单击该按钮时,将执行以下代码:
groupBox1.Top = 0;
导致分组框重新定位,如下所示:
但是请注意,锚定仍然被接受:
我怀疑您正在寻找的效果是,调整控件的大小时,除了控件的顶部位置之外,其他任何内容都不会更改。不幸的是,在这种情况下,设置
Top
属性将重新定位控件,而不是调整其大小。但是,您可以使用
SetBounds()
方法完成大小调整。在下面的示例中,我使用现有边界调整锚定控件的大小,使其具有新的顶部。请注意,我可能不会采取任何措施来避免非法的负高度。 int newtop = 0; // the new top bound
groupBox1.SetBounds(
groupBox1.Left,
newtop,
groupBox1.Width,
groupBox1.Height + groupBox1.Top - newtop);
这将导致调整大小和重新定位的控件,此后继续继续其锚定: