2012-03-23 66 views
1

我有一個自定義的UserControl函數,每次控件調整大小時都會更新AutoScrollMinSize。此控件設置爲DockStyle.Fill與其他控件的父窗體內部。窗體上的AutoScrollMinSize毛刺最小化/最大化

我的問題是,當我最小化或最大化容器窗體時,它會發送兩個連續的調整大小事件,出於某種原因我的滾動條消失。

當我通過調整窗體邊框的大小調整窗體大小時,滾動條每次都會完美更新。只有當我最小化或最大化滾動條消失時。

我試過分別或一起訂閱OnResize和OnSizeChanged,並且有同樣的問題。我試過只設置AutoScrollMinSize,如果新值不等於當前值(萬一有一些毛刺將它設置兩次相同的值),但我仍然有這個問題。

我的控制方式如下:

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

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

回答

0

不是一個完美的解決方案,但我發現,調用PerformLayout()後,我設置AutoScrollMinSize強制滾動條顯示。

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