AutoScrollMinSize表单上的毛刺最小化/最大化

时间:2012-03-23 17:38:57

标签: c# minimize autoscroll maximize

我有一个自定义UserControl,其函数可在每次调整控件大小时更新AutoScrollMinSize。此控件在父表单中设置为DockStyle.Fill,并带有其他一些控件。

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

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

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

我的控件样式如下:

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

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

1 个答案:

答案 0 :(得分:0)

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

AutoScrollMinSize = newSize;
PerformLayout();
Invalidate();