はじめに
メッセージボックスは、Windowsアプリケーションに欠かせない機能ですが、簡単なインフォメーションを表示するだけでも、OKボタンを押さないといけないわずらわしさがあります。
PlusPak for Windows Forms 5.0JのGcBalloonTipコンポーネントは、バルーンチップを表示するコンポーネントです。メッセージボックスと違い、ツールチップの形態で情報を表示できるので、入力フォームの近くなどに表示できます。また、フォーカス移動を伴わないためコントロールへの入力操作を妨げません。さらに、バルーンの中にコントロールを組み込めるため、バルーンでもイベント処理を実行することができます。
さらに、GcStylePlusコンポーネントを使うと、標準コントロールのプロパティを動的に変えることが可能です。GcContainerコンポーネントは、標準コントロールにキャプションを追加したり、背景をグラデーションで塗りつぶしたりすることもできます。
今回は、これらのコンポーネントで標準コントロールをカスタマイズし、バルーンチップを使った簡単な入力フォームを作成しました。



対象読者
Visual Basic 2005・2008を使ってプログラムを作ったことのある人。
必要な環境
Visual Basic 2005、2008、Visual C# 2005、2008、Visual Studio 2005、2008でプログラムが作れる環境。なお、本プログラムはWindows Vista上で動作するVisual Studio 2005を使用して作成し、動作確認を行っています。
プログラム実行時の注意事項
PlusPak for Windows Forms 5.0Jを使って作成したアプリケーションを配布する場合、PlusPak for Windows Forms 5.0Jのアセンブリファイルを添付する必要があります。これは、Common Language RuntimeのDLLをアプリケーションと一緒に配布するのと同じです。
本記事のサンプルアプリケーションを正常に動作させるためには、次の4つのファイルをインストールする必要があります。
ファイル名 | 説明 |
---|---|
GrapeCity.Win.PlusPak.v50.dll | 本体コンポーネント |
GrapeCity.Framework.PlusPak.v20.dll | 製品のフレームワーク |
GrapeCity.Win.PlusPak.v50.resources.dll | 本体コンポーネントのサテライトリソース |
GrapeCity.Framework.PlusPak.v20.resources.dll | 製品フレームワークのサテライトリソース |
これらのファイルを、プログラムを実行するBinフォルダに格納します。.NET Framework 2.0から追加されたクラスやメンバを使用しているので、.NET Framework 2.0がインストールされていることが必須条件です。
コンポーネントのインストール
はじめてPlusPak for Windows Forms 5.0Jを使用する方は、Visual Studio、Visual Basic、Visual C#の開発環境にPlusPak for Windows Forms 5.0Jをインストールする必要があります。インストーラは、グレープシティのWebページからダウンロードできます。
ユーザー情報を登録すると送られてくるメールにダウンロード用のURLが記載されているので、ここからダウンロードしてインストールしてください。ファイルはzip形式で圧縮されています。有償のコントロールですが、プロダクトキーを入力せずにインストールすることで、トライアル版として使用できます。制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。
コントロールの追加
PlusPak for Windows Forms 5.0Jをインストールしたら、ツールボックスに専用のタブを作成し、使用するコンポーネントを追加します。追加するコンポーネントは、「.NET Frameworkコントロール」のアセンブリ名が「GrapeCity.Win.PlusPak」で始まるコンポーネント「GcStylePlus」「GcBalloonTip」「GcContainer」です。
GUIデザイン
今回作成するGUIは、ButtonとTextBox、GcStylePlus、GcBalloonTip、GcContainerコンポーネントを使用します。GcStylePlus、GcBalloonTipコンポーネントは、ユーザーとの対話機能を持たないのでフォームの外に配置されます。

GcContainer、GcStylePlusコンポーネントの配置と設定
GcContainerコンポーネントの設定
GcContainerコンポーネントはコンテナコントロールで、その上に標準コントロールを配置すると、キャプションと3D表示機能を追加することができます。各標準コントロールのタスクメニューに新しく「キャプションの文字」と「キャプションの設定」が追加されるので、ここでキャプション文字と、文字の効果を設定します。
この設定は、個々の標準コントロールごとにできますが、GcContainerコンポーネントの「CaptionFormat」プロパティを使うと、配置したコントロールを一括して同じプロパティ値に設定できます。
ここでは、TextBoxを3つ配置し、キャプションを設定して3Dのくぼんだ文字にしています。
また、GcContainerコンポーネントの「GradientEffect」プロパティを使うと、GcContainerコンポーネントの背景色をグラデーションで塗りつぶすことができます。GcContainerコンポーネントのDockプロパティを「Fill」に設定すれば、フォームの背景色を簡単にグラデーションにできます。
GcStylePlusコンポーネントの設定
GcStylePlusコントロールは、標準コントロールのプロパティを、次の状態でそれぞれ違った設定にすることができます。
- フォーカスを持っている状態(ActiveStyle)
- 無効な状態(DisableStyle)
- マウス通過時(HoverStyle)
- マウスが押された状態(PressedStyle)
設定できるプロパティは、以下のとおりです。
ThemeStateStyle のプロパティ | 説明 |
---|---|
BackColor | 背景色を設定します |
BackgroundImage | 背景イメージを設定します |
BackgroundImageLayout | 背景イメージのレイアウトを設定します |
Cursor | カーソルを設定します |
Font | フォントを設定します |
ForeColor | 文字色を設定します |
各プロパティを設定するには、プロパティウィンドウの下にある「スタイルの編集...」をクリックすると、「スタイルエディタ」が表示されるので、ここで設定します。操作対象のコントロールにチェックを付けると、一括して同じスタイルを設定できます。
今回は、3つのTextBoxのアクティブな状態とマウスポインタが重なったときの状態で、TextBoxの背景色とマウスポインタを変えるように設定しました。
GcBalloonTipコンポーネントの設定
GcBalloonTipコンポーネントの外観設定
GcBalloonTipコンポーネントは、フォームに配置すると、各コントロールのタスクメニューに「GcBalloonTip1により追加するバルーンチップ」というメニューが追加されます。これをクリックすると、「バルーンチップエディタ」が表示されるので、バルーンのテキストや背景色、文字色、バルーンの形状などの設定を行うことができます。これらは、BalloonTipInformationクラスのプロパティを操作します。
名前 | 説明 |
---|---|
AutoClose | コントロールにフォーカスがなくなった場合に、自動的にバルーンチップを閉じるかどうかを取得または設定します |
BackColor | バルーンチップの背景色を取得または設定します |
Caption | バルーンチップのキャプションを取得または設定します |
CaptionFont | バルーンチップのキャプションのフォントを取得または設定します |
CaptionForeColor | バルーンチップのキャプションの色を取得または設定します |
CustomControl | バルーンチップ内に表示するコントロールを取得または設定します |
Delay | バルーンチップを自動的に閉じるまでの表示時間を取得または設定します |
GradientEffect | グラデーション効果を取得または設定します |
IconType | バルーンチップに表示するアイコンを取得または設定します |
Shape | 形状を取得または設定します |
ShowCloseButton | バルーンチップに閉じるボタンを表示するかどうかを取得または設定します |
Text | バルーンチップに表示する文字列を取得または設定します |
TextFont | バルーンチップのテキストのフォントを取得または設定します |
TextForeColor | バルーンチップのテキストの色を取得または設定します |
UseVisualStyleBackColor | ビジュアルスタイルを使用してバルーンチップの背景を描画するかどうかを取得または設定します |
バルーンを表示する
作成したバルーンは、Showメソッドを使用して表示します。ここでは、2番目のTextBoxにマウスポインタを重ねたときにバルーンを表示するようにします。この処理は、MouseHoverイベントハンドラに記述します。Showメソッドの引数にバルーンを表示したいコントロールのオブジェクト名を設定するだけです。
Private Sub TextBox2_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.MouseHover GcBalloonTip1.Show(TextBox2) End Sub
private void textBox2_MouseHover(object sender, EventArgs e) { gcBalloonTip1.Show(textBox2); }

バルーンにボタンを組み込む
バルーンの作成
今度は、バルーンにボタンを組み込み、このボタンのイベント処理を実行できるようにします。
最初のTextBoxに数字以外の文字が入力された場合は、メッセージボックスではなくバルーンで警告を表示します。バルーンに配置した「クリア」ボタンを押すと、TextBoxの内容をクリアします。


この場合は、コードからButtonクラスのインスタンスを作成し、GcBalloonTipコンポーネントのCustomControlプロパティに設定します。
まずは、Buttonクラスのインスタンスを作成し、イベントハンドラを設定します。
Imports GrapeCity.Win.Components Public Class Form1 Friend WithEvents btn1 As New System.Windows.Forms.Button
using GrapeCity.Win.Components; namespace modctl_cs { public partial class Form1 : Form { private System.Windows.Forms.Button btn1; public Form1() { InitializeComponent(); this.btn1 = new System.Windows.Forms.Button(); this.btn1.Click += new System.EventHandler(this.btn1_Click); }
次に、フォームのLoadイベントハンドラでバルーンを作成します。バルーンは、BalloonTipInformationオブジェクトを作成し、ここにアイコンやタイトル、メッセージを組み込みます。Captionプロパティがバルーンのタイトル、Textプロパティがメッセージです。
また、バルーンにボタンを組み込みますので、「CustomControl」プロパティにボタンのオブジェクト名を設定します。そして、SetBalloonTipInformationメソッドを使用し、作成した情報とバルーンを組み込むコントロールのオブジェクト名を指定します。
なお、このイベントハンドラでバルーンに組み込むボタンのテキストも設定しておきます。
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim myTipInfo As New BalloonTipInformation myTipInfo.Caption = "不正な入力" myTipInfo.Text = "入力された値が不正です。" myTipInfo.CustomControl = btn1 GcBalloonTip1.SetBalloonTipInformation(TextBox1, myTipInfo) btn1.Text = "クリア" End Sub
private void Form1_Load(object sender, EventArgs e) { BalloonTipInformation myTipInfo = new BalloonTipInformation(); myTipInfo.Caption = "不正な入力"; myTipInfo.Text = "入力された値が不正です。"; myTipInfo.CustomControl = btn1; gcBalloonTip1.SetBalloonTipInformation(textBox1, myTipInfo); btn1.Text = "クリア"; }
なお、GcBalloonTipコンポーネントに組み込むことのできるコントロールは1つだけです。複数のコントロールは配置できないので、注意してください。
イベント処理の作成
イベント処理は2つ作成します。1つ目は、郵便番号の入力チェックを「入力」ボタンが押された時に行うようにしますので、このボタンのClickイベントハンドラを作成します。
コントロールオブジェクトでは今作成したバルーンを呼び出しますが、入力値が数字かどうかをCharクラスのIsNumberメソッドを使用して行い、数字以外の入力があった場合のみバルーンを表示するようにします。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Char.IsNumber(Me.TextBox1.Text) = False Then GcBalloonTip1.Show(TextBox1) End If End Sub
private void button1_Click(object sender, EventArgs e) { if(Char.IsNumber(textBox1.Text, 0) == false) { gcBalloonTip1.Show(textBox1); } }
もう1つは、作成したボタンbtn1のイベントハンドラです。このイベントハンドラは自分で作成します。イベントハンドラ内では、TextBox2の入力をクリアし、フォーカスを移動させます。また、同時にバルーンを閉じる場合は、GcBalloonTipクラスのHideメソッドを実行します。
Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click Me.TextBox1.Text = "" Me.TextBox1.Focus() 'Me.GcBalloonTip1.Hide() End Sub
private void btn1_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox1.Focus();
gcBalloonTip1.Hide();
}
まとめ
GcContainer、GcStylePlusコンポーネントは、VS標準のコントロールの機能を拡張してくれるコントロールです。一味違ったGUIを簡単に作りたい、という方にはぜひお勧めしたいコンポーネントです。
GcBalloonTipコンポーネントは、メッセージボックスとは違った形で警告やユーザーの意思を受け取ることができるコントロールです。1つだけですが、バルーンの中にコントロールを組み込むことができ、さらにイベント処理も使えるので、アイデア次第でいろいろな用途に用いることができるコンポーネントだと思います。