设置Forms ClientSize会更改控件的位置

时间:2011-03-21 20:16:23

标签: .net c++ winforms visual-studio-2010

在更改控件的大小后,我正在重置OnLayout处理程序中从Panel派生的Control中的Form的大小。

panel->ClientSize = size;
this->Parent->ClientSize = 
    System::Drawing::Size(
        this->Parent->ClientSize.Width, 
        this->Parent->ClientSize.Height-difference);

使用调试器逐步执行代码表明,在更改Form的ClientSize时会发生位置更改。 小组不是以表格为主。

我遇到的问题是这会导致控件位置发生变化。

>>> FormPanel::layoutPanel - {X=604,Y=0}{Width=766, Height=250}
FormPanel::layoutPanel Height set - {X=604,Y=0}{Width=766, Height=217}
FormPanel - OnSizeChanged:{X=604,Y=0}{Width=766, Height=217}
FormPanel - OnLocationChanged:{X=604,Y=-17}{Width=766, Height=217}
FormPanel - OnMove:{X=604,Y=-17}{Width=766, Height=217}
Setting Form1->ClientSize = {Width=1370, Height=217}
<<< FormPanel::layoutPanel - {X=604,Y=-17}{Width=766, Height=217}

我得到两个事件,控件已移至Y = -17。

我的问题是:

1)OnLocationChanged和OnMove有什么区别?

2)为什么要移动?

3)我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

我会检查控件如何锚定到它的父级。