快去自定|

园龄:粉丝:关注:

.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赋值时,内部自动将数值前加了一个“负号”。

本文作者:简亦

本文链接:https://www.cnblogs.com/KevinBran/p/10490101.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   简亦  阅读(1494)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起