1. 程式人生 > >.Net中的AutoScrollPosition問題 (panel 滾動條的位置設定)

.Net中的AutoScrollPosition問題 (panel 滾動條的位置設定)

scroll .net 就是 滾動 設定 類型 混亂 arc www.

本文轉自: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賦值時,內部自動將數值前加了一個“負號”。

.Net中的AutoScrollPosition問題 (panel 滾動條的位置設定)