设置.Top属性,删除Anchor属性

时间:2010-08-30 18:25:16

标签: c# winforms anchor

我在设计时使用了一些控件的Anchor属性。 但是当我在运行时更改这些控件的.Top属性时,似乎它正在弄乱Anchor属性而不再尊重它。 怎么了?怎么修?

1 个答案:

答案 0 :(得分:2)

我尝试重现您描述的问题,但无法完全匹配。但是,以下示例可以帮助您解决我怀疑您遇到的问题。

(我的雇主阻止了i.imgur.com,SO的图像主机。如果您在查看屏幕截图时遇到任何问题,请告诉我。)

以下简单表单包含一个固定在其父表单四边的组框。

Screenshot 01

单击该按钮时,将执行以下代码:

groupBox1.Top = 0;

这导致组框重新定位如下:

Screenshot 02

但请注意,锚定仍然有效:

Screenshot 03

我怀疑您正在寻找的效果是,当您调整控件的大小时,除了控件的顶部位置之外没有任何。不幸的是,在这种情况下,设置Top属性会重定位控件而不是调整大小。

但是,您可以使用SetBounds()方法完成大小调整。在下面的示例中,我使用其现有边界使用新顶部调整锚定控件的大小。请注意,我不采取任何措施来避免非法的负面高度,你可能应该这样做。

        int newtop = 0; // the new top bound
groupBox1.SetBounds(
        groupBox1.Left,
        newtop,
        groupBox1.Width,
        groupBox1.Height + groupBox1.Top - newtop);

这导致重新调整大小并重新定位的控件继续遵循其后的锚定:

Screenshot 04