Coolbar(またはRebar)とは、エクスプローラやインターネットエクスプローラの上部についているようなツールバー等の配置が自由に変えられるコントロールのことです。このCoolbarはたとえばVB6では「Windows Common Control-3」として提供されていましたが、.NETになり完全に消えてしまいました。ここでは、このCoolbarの代わりになるものを紹介します。
.NET Framework 2.0からはToolStripコントロールが追加されました。このToolStripがCoolbarの代わりになります。ToolStripについては、「ToolStripとToolStripContainerを使って、ツールバーの位置をユーザーが変更できるようにする」等で詳しく説明しています。
.NET Framework 1.1 以前では、Coolbarの代わりになるものは用意されていません。そこで、.NETでこのCoolbarを簡単に使用できるようにしてくれるコンポーネントを探しました。以下にそれらを紹介します。
ここでは無料で使用できるものしか紹介しませんが、これらはまったくの無保証ですので、会社で使うなどきちんとしたものを作る必要がある場合は高くても有料のものを使うべきでしょう。また、実際に使用する際にはそれぞれのライセンスを必ず確認してください。さらに、私が使い方を完全に理解していないために間違ったことを書いているかもしれませんので、必ずご自分でご確認ください(間違いがあったときはご連絡ください。)。
まずVBのCoolbarコントロールにかなり近いのが Anthony Baraff さんの「RebarWrapper Control」です。これはVBのCoolbarコントロールと同様にフォームのデザイン画面でバンドを追加でき、そのバンドに標準のコントロール(ツールバーやテキストボックス、コンボボックスなど)を入れることができます。VBのCoolbarコントロールを使い慣れており、それ以上の機能を期待しない方にはお勧めです。
上に紹介したRebarWrapper Controlでは「Windows Common Control-3」と同様、エクスプローラのようにメインメニューをCoolbarのバンドに加えるということができません。これを可能にするのが Lutz Roeder さんの「CommandBar for .NET」です。これはその名の通りMS Officeで使われているコマンドバーの機能を実現するものらしく、Rebarとツールバー、メインメニュー、ポップアップメニュー(コンテキストメニュー)といった独自のコントロールが用意されており、Rebarに追加できるコントロールはこの用意されたツールバーとメインメニューだけのようです(注)。しかし、シェブロン(ウィンドウに収まりきらない時右端に表示される">>")の表示や、簡単にメニューにアイコンを表示することができるなど、総合的にはかなり優れています。
注:TextBoxやComboBoxをそのままバンドに追加すると明らかに不都合が生じます。これらをPanelに乗せたものをバンドに追加すると、まだまともになるようです。また、ツールバーにアイテムとして追加することはできないようです。
注意:このコントロールは無料では使えなくなり、名前が「SharpLibrary」となったようです。Code Projectのページ(http://www.codeproject.com/cs/menu/vsnettoolbar.asp)はなくなり、新しいページ「SharpLibrary」に移動したようです。(2005/9/19 追記)
Carlos H. Perez さんの「VSNetToolbar」はこの CommandBar for .NET を拡張したものです。かなり大幅に拡張されており、CommandBar for .NETを使って「こうできたらな」と思えることがほとんどできるようになっています。多くの有用なコントロールが追加されており、ReBarとMenu Control以外にBorder Label, Button Ex, Color Combo Box Ex, Color List Box Ex, Image Combo Box Ex, Numeric Text Box Ex, Outlook Bar Ex, Progress Bar Ex, Tree View Exといったものが用意されています。Rebarのバンドに追加できるのはやはりメニューとツールバーのみですが、ツールバーにImage Combo Box Exなどのコントロールを乗せることができますので、これを使えばMS OfficeやVisual Studioのツールバーに近いものを作れそうです。
注意:このコントロールは無料では使えなくなってしまったようです。(2005/9/19 追記)
Tim Dawsonさんの「SandBar」は、商用で利用するためにはライセンスを購入する必要がありますが、完全に無料で金銭的利益が生じないソフトに使うためならば、無料で「SandBar Freeware」を使用することができます(Aboutダイアログにこのライブラリを使っている旨を表示する必要があります)。SandBarはRebarにメニューとツールバーを追加することができ、さらにこのメニューとツールバーにはコンボボックスを載せることができます。しかも、Rebarのバンドは順番や位置を変えられるだけでなく、縦に表示することも出来ますし、フォームから分離させ、フローティング状態し、フォームの好きな位置にドッキングさせることもできます。しかし、よく見るRebarと比べると、動作がちょっと違います。
(この記事はメールマガジン「.NETプログラミング研究」で紹介したものです。)
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。