1

コントロールのサイズが変更されるたびに AutoScrollMinSize を更新する関数を持つカスタム UserControl があります。このコントロールは、親フォーム内で他のコントロールとともに DockStyle.Fill に設定されます。

私の問題は、コンテナー フォームを最小化または最大化すると、2 つの連続したサイズ変更イベントが送信され、何らかの理由でスクロール バーが消えることです。

フォームの境界線のサイズを変更してフォームのサイズを変更すると、スクロール バーが毎回完全に更新されます。スクロール バーが消えるのは、最小化または最大化したときだけです。

OnResize と OnSizeChanged の両方を個別にまたは一緒に購読しようとしましたが、同じ問題が発生しました。新しい値が現在の値と等しくない場合にのみ AutoScrollMinSize を設定しようとしましたが(同じ値に2回設定する際に不具合があった場合)、まだこの問題があります。

私のコントロール スタイルは次のとおりです。

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 に答える