更改SizeChanged中的大小事件不会生效

本文关键字:小事件 大小事 SizeChanged 更改 | 更新日期: 2023-09-27 18:25:49

技术:C#,Winforms

背景:我有以下容器结构(表单包含一个面板,其中包含2个面板)

Form F1
 |-> Panel P1 (DockStyle.Fill)
        |-> Panel P2 (DockStyle.Top)
        |-> Panel P3 (DockStyle.Fill)

我注册P3.SizeChange事件,在该事件中我更改P2.Size

问题:我希望所有的尺寸变化都能正确地反映在GUI 上

观察结果:每次P2.大小根据之前设置的大小更改

我尝试过的:

  1. 我尝试过调用PerformLayout和Invalidate,但GUI仍然不能正确反映更改
  2. 如果我将相同的函数连接到F1.SizeChange,一切都很好
  3. 如果我没有更改大小,而是更改并恢复DockStyle(P3.Dock=DockStyle.None;P3.Dock=DockStyle.Fill),它会扰乱GUI

似乎在Forms库中,我无法从同级控件的布局相关事件(SizeChanged)更改布局相关属性(Size、Dock等)

是否有其他人遇到此问题并有解决方法?我正在使用Visual Studio Express 2010 中的.NET 4.0(我认为)

输入将得到极大的赞赏

更改SizeChanged中的大小事件不会生效

尝试在BeginInvoke()中更改下一次消息循环迭代的大小(这将在布局过程结束后发生)。

我不知道你在努力实现什么;然而,如果您试图在P2和P3之间分配可用空间,SplitContainer可能有助于解决问题。