DOBON.NET

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」をご覧ください。

  • 履歴:
  • 2007/1/15 .NET Framework 2.0に関する記述を追加。
  • 2015/11/5 タイトルを変更。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。