2012-10-24 27 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; 

いますが、正の値を使用する必要がスクロール位置を設定するので、あなたは負の数を反転する必要がまったく同じスクロール位置を復元するために... :

それ以外の場合、AutoScrollPositionは0,0になります。

+2

これは単なる「煩雑」ではなく、直感的です。しかし、この回答に感謝、非常に有用 –

+0

あなたは私の日を保存していただきありがとうございます。 – mikesneider

+0

これは単なる「直感的な直観的」ではなく、間違っています:o)AutoScrollPositionはプロパティです。あなたがそれを設定したならば、違うものを返すべきではありません。負の値を設定すると、0に変更されます。ただし、正の値を設定すると、負の値が返されます。したがって、設定はメソッドであり、読み取り専用プロパティを取得する必要があります。私がオブジェクトCarを持っていて、ColorプロパティをGreenに設定してから、ColorプロパティがすぐにRedを返すと、これは設計が非常にうまくいかないことに同意すると思います – Gwynge

関連する問題