更改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.大小根据之前设置的大小更改
我尝试过的:
- 我尝试过调用PerformLayout和Invalidate,但GUI仍然不能正确反映更改
- 如果我将相同的函数连接到F1.SizeChange,一切都很好
- 如果我没有更改大小,而是更改并恢复DockStyle(P3.Dock=DockStyle.None;P3.Dock=DockStyle.Fill),它会扰乱GUI
似乎在Forms库中,我无法从同级控件的布局相关事件(SizeChanged)更改布局相关属性(Size、Dock等)
是否有其他人遇到此问题并有解决方法?我正在使用Visual Studio Express 2010 中的.NET 4.0(我认为)
输入将得到极大的赞赏
尝试在BeginInvoke()
中更改下一次消息循环迭代的大小(这将在布局过程结束后发生)。
我不知道你在努力实现什么;然而,如果您试图在P2和P3之间分配可用空间,SplitContainer
可能有助于解决问题。