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 回答