2012-10-24 53 views
5

我有一個用戶控件,它是可滾動的控件,並且我想更改它的AutoScrollPosition(僅X值)。AutoScrollPosition在設置到點位置後沒有報告正確的值

我做這樣的:

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

newScrollX得到正確的值,P在正確的點,但AutoScrollPosition設置的線之後,AutoScrollPosition是(0,0)。

什麼問題?

謝謝

+3

newScrollX的價值是什麼? AutoScrollPosition有點奇怪:你必須傳遞一個正值,但它會報告一個負值。 – LarsTech

回答

13

AutoScrollPosition非常麻煩。

通常這樣做,當你得到負值:

Point p = this.AutoScrollPosition; 

但設置必須使用正值滾動位置的時候......所以恢復完全相同的滾動位置,你必須反轉負數:

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

否則AutoScrollPosition將爲0,0觀察。

+2

這不僅僅是「繁瑣」,它是違反直覺的。但謝謝你的回答,非常有幫助 –

+0

你救了我一天,謝謝。 – mikesneider

+0

這不僅僅是「反直覺」,它是錯誤的:o)AutoScrollPosition是一個屬性。如果你設置它,它不應該返回不同的東西。如果您設置了負值,那麼它會將它們更改爲0.但是,如果您設置正值,則會將它們作爲負值返回。因此該設置應該是一種方法並獲得只讀屬性。如果我有一個對象汽車,並將顏色屬性設置爲綠色,然後顏色屬性立即返回紅色我想我們會同意這是一個設計很差的類 – Gwynge

相關問題