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

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

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

使用调试器逐步执行代码表明,当表单的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)我在这里做错了什么?


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

链接地址: http://www.djcxy.com/p/58369.html

上一篇: Setting a Forms ClientSize changes the Location of the control

下一篇: javascript:find screen resolution when having multiple monitors