.NET FrameworkのSystem.Windows.Forms.Panelクラスは、AutoScrollプロパティをtrueにすることによって、自動的にスクロールバーを付けることが出来ます。
また、このクラスはコンテナであるため、フォーカスを持つことがありません。
さて、ここで問題です。
このスクロールバーをキーボードで操作する方法はあるでしょうか?
……現状で答は無し。
根拠のない感想文 (妥当な解釈であるかは知らないよ!) §
PanelクラスのAutoScrollプロパティが存在する目的は、たとえば巨大な画像データをスクロールバーを付けて閲覧するため……等「ではない」。
そうではなく、サイズ変更可能なフォームでユーザーが過剰に小さくフォームを小さくした場合等に操作可能にするため。
たとえば、フォーム上にPanelを貼り付け、Anchorプロパティを四方に設定する。そして、PanelのAutoScrollプロパティをtrueにした上で、Panel上にコントロールを配置する。
このフォームを実行中にユーザーがサイズを小さく変更したとき、スクロールバー操作で全てのコントロールを見て操作できる。
さて、このようなフォームをキーボードで操作するときには、キーボードの操作は全て個々のコントロールが受け取るのが前提となる。従って、スクロール操作のために使えるキー操作は存在しない。しかし、Tabキーによるフォーカス移動はできる。Panelの自動スクロール機能は、フォーカスを持ったコントロールが常に見えるようにスクロール位置を調整してくれるので、Tabキーさえ使えば全てのコントロールを見て操作できる。
つまり、スクロール位置を明示的に操作するキー操作が存在しないことは問題ではないし、その方が妥当な仕様である。
逆に言えば、見える範囲を超えるような巨大なコントロールを貼り付けるべきではない。それは、このアーキテクチャでは上手く処理できない。