0

カスタムコントロールを動的に追加するパネルがあります。コントロールがパネルの境界を超えた場合、水平/垂直スクロールバーは自動的に(AutoScroll == true)を表示し、スクロールバーは次のコードを介してコントロールに従います。

if(panelDiagram.VerticalScroll.Visible || panelDiagram.HorizontalScroll.Visible) {
    panelDiagram.ScrollControlIntoView(tempNode);
}

このように、tempNodeを移動している間、スクロールバーがそれに追従します。

データベースからすべてを再度ロードするときにスクロールバーの状態を保持する方法はありますか?私は次のような多くのことを試しましたScrollControlIntoView(lastAddedControl)が、何も機能していません。たぶん私は自分の手ですべてをオフAutoScrollにして管理する必要がありますか?

4

1 に答える 1

0

Panelから派生し、ScrollableControl役立つと思われるいくつかのプロパティを公開します。

  • AutoScrollPosition
  • VerticalScroll
  • HorizontalScroll

それはautoScrollPositionあなたが求めているもののようです。これPointは、各スクロールバーの現在のXおよびYスクロール座標を含むインスタンスです。X垂直スクロールのみを実行している場合はゼロになります。

そのように保存します:

public override void OnLoad(Object sender, EventArgs e) {

    this.panel1.AutoScrollPosition = GetSavedScrollPoint();

}

public override void OnFormClosing(Object sender, EventArgs e) {

    SavePointSomewhere( this.panel1.AutoScrollPosition );
}
于 2013-02-10T10:24:20.400 に答える