AutoScrollをTrueにしてスクロールバーを表示された時、指定した位置までスクロールする指定した座標位置までスクロールさせるフォームのAutoScrollプロパティをTrueにしてスクロールバーを表示させた時、指定した位置までスクロールさせるには、AutoScrollPositionプロパティを使います。 AutoScrollPositionプロパティにスクロール位置を設定する時、スクロールの開始位置からどれだけ離れているかを正の整数で設定します。つまり、垂直スクロールバーでは下に、水平スクロールバーでは右に移動させるほど、大きな値を設定します。ところがAutoScrollPositionプロパティでスクロール位置を取得する時は、逆にスクロールの開始位置からどれだけ離れているかが負の整数で取得できます。例えばAutoScrollPositionプロパティに(100, 200)という位置を設定した後、AutoScrollPositionを取得すると、(-100, -200)となります。 現在の位置から右、下に10ずつスクロールさせるには、次のようにします。 [VB.NET] Me.AutoScrollPosition = _ New Point(-Me.AutoScrollPosition.X + 10, _ -Me.AutoScrollPosition.Y + 10) [C#] this.AutoScrollPosition = new Point(-this.AutoScrollPosition.X + 10, -this.AutoScrollPosition.Y + 10); 指定したコントロールが表示されるようにスクロールさせるまた、ScrollControlIntoViewメソッドにより、指定したコントロールが表示されるようにスクロールすることができます。 MSDNではScrollControlIntoViewメソッドについて、「このメンバは、.NET Framework インフラストラクチャのサポートを目的としています。独自に作成したコード内で直接使用することはできません。」とありますが、これは間違いで、問題なく使用できるようです(注)。(.NET Framework 2.0からは、この記述が消えました。) 注:ニュースグループにマイクロソフトからの投稿があります。 補足:SB_THUMBPOSITIONやSB_THUMBTRACKメッセージによりスクロールさせる場合は、メッセージを送った後にSetDisplayRectLocationメソッドを呼び出さなければ正常に機能しないケースがあるようです。詳しくは、「microsoft.public.dotnet.framework.windowsforms - Re: scrolling a panel」をご覧ください。
(この記事は、「.NETプログラミング研究」で紹介したものを基にしています。) |
|
Copyright 2002-2008 DOBON!. All rights reserved.
|