我的 ScrollLayoutPanel 有问题,最小化窗口后,滚动区域扩大很多,在我的项目下方创建大量空白空间。这也会产生一个问题,即用户多次最小化和最大化窗口,并且流布局的当前视图随机位于总滚动区域中间的某个位置。然后,用户单击面板内的按钮,面板不会激活它,而是重置到顶部,迫使用户搜索该按钮并再次单击它。我尝试在窗口最小化时暂停布局,但似乎暂停是在损坏完成后执行的。有什么办法可以解决这个问题吗?
提前致谢
对于任何遇到这个问题的人来说,以下是有效的方法:
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == 0x0112)
{
if (m.WParam == new IntPtr(0xF020))
{
this.buttonsContainer.AutoScroll = false;
this.buttonsContainer.SuspendLayout();
}
if (m.WParam == new IntPtr(0xF120))
{
this.buttonsContainer.AutoScroll = true;
this.buttonsContainer.ResumeLayout();
}
}
}
它的作用是在窗口最小化时禁用滚动并暂停布局(状态
0xF020
),并在窗口恢复时反转(状态0xF120
)