我有一个面板,我可以动态添加自定义控件。如果控件超出面板边界,则水平/垂直滚动条会自动显示(AutoScroll == true
),滚动条将通过以下代码跟随控件:
if(panelDiagram.VerticalScroll.Visible || panelDiagram.HorizontalScroll.Visible) {
panelDiagram.ScrollControlIntoView(tempNode);
}
这样,在移动tempNode时,滚动条将跟随它。
当我从数据库再次加载所有内容时,有没有办法保留滚动条的状态?我尝试了许多像ScrollControlIntoView(lastAddedControl)
这样的东西,但没有任何工作。也许我必须关掉AutoScroll
并用手来管理所有事情?
答案 0 :(得分: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 );
}