[转].net中的autoscrollposition问题 (panel 滚动条的位置设定)

本文转自:http://www.cnblogs.com/h2appy/archive/2008/04/23/1167400.html

有panel类型的窗体panel1,其autoscroll设为了true。

在使用autoscrollposition调整滚动条时出现了很混乱的现象,有时滚动条会自动滚动到起始处。

经过试验,找到了原因:

以调整水平滚动条为例。
例子一:
point p = new point(20, 0);
panel1.autoscrollposition = p;
上面两行代码使滚动条向右滚动了20个像素点;注意,此时的autoscrollposition的值是(-20, 0)!就是说
autoscrollposition自动给20加了个“负号”。
例子二:
point p = new point(-20, 0);
panel1.autoscrollposition = p;
这两行代码使滚动条滚动到了起始处,因为-20前面再加一个“负号”就变成了正数20,而滚动条起始位置是0,
越向右值越小(负数)。滚动条不能滚动到起始点左侧去,所以内部自动抛弃了20,取值为0。
例子三:
在使用autoscrollposition.x时也要注意它是非正数(0或负数),比如想在当前滚动条位置的基础上再向
右滚动10个像素,应该:
point p = new point(10 - panel1.autoscrollposition.x, 0);
panel1.autoscrollposition = p;
因为panel1.autoscrollposition.x是负数所以要用10减去panel1.autoscrollposition.x,使之变为正数。

总之,在使用autoscrollposition时只要记得两点:
1、水平滚动条起始点的autoscrollposition.x值为0,越往右值越小(负数)。
2、通过point类型的方式给autoscrollposition.x赋值时,内部自动将数值前加了一个“负号”。

你可能感兴趣的:(java)