.NET ROOM.NET ROOMトップへCOMRADE総合トップへ
「6:コントロール実行時の動作を制御する」へ

スクロールのまとめ

 AutoScrollを使うメリットは実装が簡単なことですが、
デメリットは「AutoScrollには細かなイベントが用意されていない」ということです。
そのため、AutoScrollを利用した際にスクロールをイベントで拾うためには、
WndProcメソッドをオーバーライドする必要があります。

   protected override void WndProc (ref Message m) {
    const int WM_HSCROLL = 0x0114;
    const int WM_VSCROLL = 0x0115;
    switch (m.Msg) {
    case WM_HSCROLL:
     // スクロールの処理
    case WM_VSCROLL:
     // スクロールの処理
    }
    base.WndProc(ref m);
   }

 また、「スクロールバーの非表示を制御できない」ということもデメリットになります。

 これとは反対に、VScrollBarコントロールとHScrollBarコントロールを貼ってスクロールを
実装する場合には、手間はかかりますが、イベントも用意されていますし、
「任意の場所にスクロールバーを配置できる」というメリットもあります。
ただし、現状のVScrollBarとHScrollBarはWindows XP上で実行しても、
AutoScrollで現われたスクロールバーのようなWindows XPスタイルにはなりません。
これを解決するには、アプリケーションレベルでの変更が必要になります。
詳細は記事末コラムを参照してください。

 AutoScrollを利用する方法、VScrollBarとHScrollBarを利用する方法ともに一長一短がありますので、
途中で変更したくなっても簡単に変更できるようにコーディングしておくとよいでしょう。


ページトップへ


連載終了にあたって

 今回でこの連載は終了です。
6回にわたって、VisualStudio .NETを使って行なう「コンポーネント開発」に関して解説させていただきました。
コンポーネントの開発にはGUI付きのWindowsフォームのコントロールのみを利用しましたが、
筆者自身がWindowsフォーム用のコントロールを開発している中で、
デザイン時の挙動に関する記事やドキュメントなどが不足していると感じたため、
デザイン時の挙動を重点的に取り上げてみました。

 この連載で取り上げたのは、あくまでもアイディアを実現する方法です。
みなさんもこれらの方法を使って、すばらしいコンポーネントを作ってみてはいかがでしょうか。

 最後になりましたが、これまで連載をお読みいただいたみなさまに深く感謝いたします。
またどこかでお会いしましょう。


前へ | ページトップへ | 次へ