AutoScroll
trueに設定されたフォームがあります。フォームの開始時にフォームの一部のコントロールは表示されませんが、それらの場所はすでに設定されています。コントロールが表示されるようになると、現在の位置を基準にして位置が計算されますがAutoScrollPosition
、これはまったく不要です。
これを防ぐ方法はありますか?
コントロールが最初に表示されたときの位置を次のように設定してみました。
void OnControlVisibleChanged(object sender, EventArgs e)
{
Control ctl = (Control)sender;
if (ctl.Visible)
{
ctl.Location = Point.Add(ctl.Location, new Size(this.AutoScrollPosition));
ctl.VisibleChanged -= OnControlVisibleChanged;
}
}
一部のコントロールでは機能しますが、機能しないものもあります。どうしてか分かりません。
編集:コントロールが表示されると、実際のAutoScrollPositionが変更されるようですが、AutoScrollPosition
プロパティはすぐには更新されません。