正在保存滚动条状态/位置

本文关键字:位置 状态 滚动条 保存 | 更新日期: 2023-09-27 17:58:37

我有一个面板,可以在其中动态添加自定义控件。如果控件超出面板边界,水平/垂直滚动条将自动显示(AutoScroll == true),滚动条将通过以下代码跟随控件:

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

这样,当移动tempNode时,滚动条将跟随它

当我再次从数据库加载所有内容时,有什么方法可以保持滚动条的状态吗?我尝试了很多类似ScrollControlIntoView(lastAddedControl)的东西,但都不起作用。也许我必须关闭AutoScroll,用我的手来管理一切?

正在保存滚动条状态/位置

Panel是从ScrollableControl派生而来的,它公开了一些您可能会发现有用的属性:

  • AutoScrollPosition
  • VerticalScroll
  • HorizontalScroll

看起来autoScrollPosition就是你想要的;它是一个CCD_ 10实例,包含每个滚动条的当前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 );
}