2007年07月07日
川俣晶の縁側ソフトウェア技術雑記total 5409 count

System.Windows.Forms.PanelクラスのAutoScrollプロパティで表示されたスクロールバーをキーボードで操作する方法はあるか?

Written By: 川俣 晶連絡先

 .NET FrameworkのSystem.Windows.Forms.Panelクラスは、AutoScrollプロパティをtrueにすることによって、自動的にスクロールバーを付けることが出来ます。

 また、このクラスはコンテナであるため、フォーカスを持つことがありません。

 さて、ここで問題です。

 このスクロールバーをキーボードで操作する方法はあるでしょうか?

 ……現状で答は無し。

根拠のない感想文 (妥当な解釈であるかは知らないよ!) §

 PanelクラスのAutoScrollプロパティが存在する目的は、たとえば巨大な画像データをスクロールバーを付けて閲覧するため……等「ではない」。

 そうではなく、サイズ変更可能なフォームでユーザーが過剰に小さくフォームを小さくした場合等に操作可能にするため。

 たとえば、フォーム上にPanelを貼り付け、Anchorプロパティを四方に設定する。そして、PanelのAutoScrollプロパティをtrueにした上で、Panel上にコントロールを配置する。

 このフォームを実行中にユーザーがサイズを小さく変更したとき、スクロールバー操作で全てのコントロールを見て操作できる。

 さて、このようなフォームをキーボードで操作するときには、キーボードの操作は全て個々のコントロールが受け取るのが前提となる。従って、スクロール操作のために使えるキー操作は存在しない。しかし、Tabキーによるフォーカス移動はできる。Panelの自動スクロール機能は、フォーカスを持ったコントロールが常に見えるようにスクロール位置を調整してくれるので、Tabキーさえ使えば全てのコントロールを見て操作できる。

 つまり、スクロール位置を明示的に操作するキー操作が存在しないことは問題ではないし、その方が妥当な仕様である。

 逆に言えば、見える範囲を超えるような巨大なコントロールを貼り付けるべきではない。それは、このアーキテクチャでは上手く処理できない。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2007年
07月
21日
DrawItemEventArgs.Index プロパティは-1になることがある
3days 0 count
total 6807 count
【技術雑記】の前のコンテンツ
2007年
07月
02日
C#2.0にて、匿名メソッドで使うデリゲート型をいちいち宣言しないで済ませる技
3days 0 count
total 10867 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20070707230803
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.