特集:Windowsフォームにスパイスを――MessengerやOutlookに見る不定形フォームテク:Visual Studio Magazine(4/4 ページ)
MSN MessengerやOutlookなどで見られる、効果音と共に印象的な通知ポップアップ表示。従来では難しかったこの効果は、.NET Framework利用で容易となる。Visual Studio Magazine特集連載2回目となる今回は、その開発手法について紹介しよう。
このようにして、ユーザーからの対応を要する情報を上品に表示するMessengerスタイルの通知を作成できる(リスト3)。
さらに、Messenger APIを使ってアラートを取り込むこともでき、Microsoft Alerts SDKを使うこともできる。しかしながら、これは少しより多くの作業を必要とするだけで、Windowsフォームにスパイスを加えるということと本質的に同じだ。
Messengerスタイルの通知の作成は、Outlook 2003スタイルの通知の作成とほとんど同じだ。唯一の違いは、フォームがどのようにポップアップするか、そして、それがどこからポップアップするかという点だ。デスクトップ作業域を計算し、それに基づいた高さと幅をベースとしてフォームを読み込むためには、WorkingArea.Sizeプロパティを使う。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ドッキング可能なコンソールを作る
フォーム上で、コントロールを動かしたりサイズを変更したりドッキングしたりできるようにする仕組みは、パワーユーザーにとって必須の機能といえよう。
そうとはいえ、ユーザーがボタンやラベルをフォームに沿って動かしたり、サイズを変更したりできることを望むわけではない。そうではなく、コンテナコントロールをフォームに沿って移動したりドッキングしたり、サイズを変更したりできるようにしたい。
コンテナコントロールは、PictureBoxだったり、Panelだったり、GroupBoxだったりする。これらは、他のコントロールを含むコントロールだ。
Windowsフォームのなかのコンテナ(およびフォーム自身)の便利な点は、ドッキング処理の複雑さの一部を自動的に扱ってくれるという点だ。Windowsフォームにドッキング可能なパネルを作るため、Panelクラスから継承したDockingControlと名付けたコントロールを作っていこう。DockingControlでは、パネルの移動やドッキングの複雑さを処理するようにする。
新しいWindowsコントロールライブラリを作成し、必要な名前空間を参照するためにImportsステートメントを追加し、Panelクラスから継承するように変更してほしい。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
フォームに沿ってドラッグできるDockingControlは、不定形なフォームをドラッグするのと同じコードで実現できる。ただし、ここではC#の代わりにVB.NETでコーディングした。したがってわずかな文法上の違いがある(リスト4)。
フォームに沿ってドラッグできるDockingControlのコードは、不定形なフォームをデスクトップ上でドラッグするのと同じコードで実現できる。DockingControlはC#の代わりにVB.NETで書いてある。したがって、文法上のわずかな違いがある。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
それでは、フォームの縁にコントロールをドッキングできるようにしていこう。そのためには、フォームの縁を絶えず調べるために、MouseMoveイベントのコードを修正する。
次のようにすれば、いったんコントロールが格納された縁(この縁はフォームあるいは、ほかのドッキングされたコントロールの縁)の位置内に入った時、パネルを適所に自動的にドッキング処理する。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
コントロールのドッキングを解くには、パネルがドラッグされており、すでにドッキングされているかどうかを確認する必要がある。そして、コントロールを前の大きさに戻し、ほかのものに自動的にドッキングされないように、コントロールが格納されている縁から十分遠くに移動させる。
そのためには、MouseMoveイベントにおけるコントロールをドッキングさせるコードに、次のような簡単なコードを加えればよい。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このようにして簡単に、ドッキングしたり、サイズを変更したり、ドラッグしたりする柔軟なコントロールを作成できる。
この種のコントロールは、「不定形なフォーム」「スタイリッシュな通知」に加えて、ユーザーが期待する柔軟で近代的で一貫したユーザーインタフェースをユーザーに提供するスパイスとなるだろう。
著者について:
Andrew Flick氏は、Microsoft Visual Studio Industry PartnerであるInfragistics社の.NETテクニカルエバンジェリスト。Infragistics社のテクノロジーデモンストレーションを世界に伝えるかたわら、アプリケーションの実装サンプルや.NETテクノロジーの記事を著す責務も担う。Microsoft .NET MVPであり、INETA学術委員会に属している。
Jason Beres氏は、Microsoft Visual Studio Industry PartnerであるInfragistics社の.NETテクニカルエバンジェリスト。Microsoft .NET MVPであり、INETA議長局に属しており、INETA学術委員会の共同議長を務めている。「Sams Teach Yourself Visual Studio .NET 2003 in 21 Days」の著者であり、「Visual Basic .NET Bible」と「C# Bible」(ともにWiley刊)の共著者。
日本語訳:大澤文孝
© Copyright 2001-2005 Fawcette Technical Publications