2013-02-10 112 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