将AutoScrollPosition设置为点位置后,它不会报告正确的值

时间:2012-10-24 16:55:51

标签: c# user-controls scroll

我有一个用户控件,它是可滚动控件,我想更改其AutoScrollPosition(仅限X值)。

我这样做:

int newScrollX = myFunction();
Point p = new Point(newScrollX, this.AutoScrollPosition.Y);
this.AutoScrollPosition = p;

newScrollX获取正确的值,p得到正确的点,但在AutoScrollPosition设置行之后,AutoScrollPosition为(0,0)。

有什么问题?

由于

1 个答案:

答案 0 :(得分:14)

AutoScrollPosition非常麻烦。

通常在执行此操作时会得到负值:

Point p = this.AutoScrollPosition;

但是在设置滚动位置时你必须使用正值...所以要恢复完全相同的滚动位置,你必须反转负数:

this.AutoScrollPosition = new Point(-p.X, -p.Y)

否则,AutoScrollPosition将为观察到的0,0。