2013-02-10 171 views
0

我有一個面板,我在其中動態地添加自定義控件。如果控制外出面板界,水平/垂直滾動條會自動顯示(AutoScroll == true)和滾動條將通過下面的代碼按照控制:保存滾動條狀態/位置

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

這樣,在四處移動tempNode,滾動條會遵循它。

當我從數據庫中再次加載所有東西時,有什麼辦法保持滾動條的狀態嗎?我嘗試了很多東西,如ScrollControlIntoView(lastAddedControl),但沒有任何工作。也許我必須關掉AutoScroll並且用我的手管理所有事情?

回答

0

PanelScrollableControl暴露出一些屬性可能對您有用得出:

  • 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); 
} 
+0

保存AutoScrollPosition X,Y獨自加載回不會做的工作。如有必要,我可以提供截圖。 – prettyvoid 2013-02-10 10:32:47

+0

'AutoScrollPosition'是一個結構,所以你不能單獨設置字段,你必須完全替換結構實例。 – Dai 2013-02-10 11:00:53

+0

這不是問題所在。我將AutoScrollPosition設置爲新的Point(x,y),但結果不正確。 – prettyvoid 2013-02-10 11:08:42