FlowLayoutPanel 中的滚动区域

问题描述 投票:0回答:1

我的 ScrollLayoutPanel 有问题,最小化窗口后,滚动区域扩大很多,在我的项目下方创建大量空白空间。这也会产生一个问题,即用户多次最小化和最大化窗口,并且流布局的当前视图随机位于总滚动区域中间的某个位置。然后,用户单击面板内的按钮,面板不会激活它,而是重置到顶部,迫使用户搜索该按钮并再次单击它。我尝试在窗口最小化时暂停布局,但似乎暂停是在损坏完成后执行的。有什么办法可以解决这个问题吗?

提前致谢

c# winforms
1个回答
0
投票

对于任何遇到这个问题的人来说,以下是有效的方法:

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

© www.soinside.com 2019 - 2024. All rights reserved.