1

我有一个自定义的 UserControl ,其函数在每次调整控件大小时都会更新 AutoScrollMinSize 。此控件设置为 DockStyle.Fill 在带有其他一些控件的父窗体内。

我的问题是,当我最小化或最大化容器表单时,它会发送两个连续的调整大小事件,并且由于某种原因我的滚动条消失了。

当我通过调整表单边框大小来调整表单大小时,滚动条每次都会完美更新。只有当我最小化或最大化滚动条才会消失。

我试过单独或一起订阅 OnResize 和 OnSizeChanged 并且遇到同样的问题。如果新值不等于当前值,我只尝试设置 AutoScrollMinSize(以防在将其两次设置为相同值时出现一些故障),但我仍然有这个问题。

我的控件样式如下:

this.SetStyle(ControlStyles.DoubleBuffer |
              ControlStyles.AllPaintingInWmPaint |
              ControlStyles.UserPaint |
              ControlStyles.ResizeRedraw, true);

this.DoubleBuffered = true;
this.AutoScroll = true;
4

1 回答 1

0

这不是一个完美的解决方案,但我发现在设置 AutoScrollMinSize 后调用 PerformLayout() 会强制显示滚动条。

AutoScrollMinSize = newSize;
PerformLayout();
Invalidate();
于 2012-03-30T17:00:49.943 回答