SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(PlusPak)

カスタムバルーンチップを持った.NETアプリケーションを作る

PlusPak for Windows Forms 5.0JのGcBalloonTip1コンポーネントを使ったアプリケーションの作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

 PlusPak for Windows Forms 5.0JのGcBalloonTip1コンポーネントは、バルーンチップを表示するコンポーネントです。今回は、これらのコンポーネントで標準コントロールをカスタマイズし、バルーンチップを使った簡単な入力フォームを作成しました。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 メッセージボックスは、Windowsアプリケーションに欠かせない機能ですが、簡単なインフォメーションを表示するだけでも、OKボタンを押さないといけないわずらわしさがあります。

 PlusPak for Windows Forms 5.0JのGcBalloonTipコンポーネントは、バルーンチップを表示するコンポーネントです。メッセージボックスと違い、ツールチップの形態で情報を表示できるので、入力フォームの近くなどに表示できます。また、フォーカス移動を伴わないためコントロールへの入力操作を妨げません。さらに、バルーンの中にコントロールを組み込めるため、バルーンでもイベント処理を実行することができます。

 さらに、GcStylePlusコンポーネントを使うと、標準コントロールのプロパティを動的に変えることが可能です。GcContainerコンポーネントは、標準コントロールにキャプションを追加したり、背景をグラデーションで塗りつぶしたりすることもできます。

 今回は、これらのコンポーネントで標準コントロールをカスタマイズし、バルーンチップを使った簡単な入力フォームを作成しました。

入力の際の注意事項をバルーンで表示する
入力の際の注意事項をバルーンで表示する
郵便番号欄に数字以外の文字が入るとバルーンで警告をする
郵便番号欄に数字以外の文字が入るとバルーンで警告をする
GcStylePlusコンポーネントによって、フォーカスのあるTextBoxとマウスが重なったTextBoxで背景色を変えることができる
GcStylePlusコンポーネントによって、フォーカスのあるTextBoxとマウスが重なったTextBoxで背景色を変えることができる

対象読者

 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」です。

アセンブリ名がGrapeCity.Win.PlusPakで始まるGcStylePlus、GcBalloonTip、GcContainerコンポーネントを選択する
アセンブリ名がGrapeCity.Win.PlusPakで始まるGcStylePlus、GcBalloonTip、GcContainerコンポーネントを選択する

GUIデザイン

 今回作成するGUIは、ButtonとTextBox、GcStylePlus、GcBalloonTip、GcContainerコンポーネントを使用します。GcStylePlus、GcBalloonTipコンポーネントは、ユーザーとの対話機能を持たないのでフォームの外に配置されます。

GUIの画面
GUIの画面

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クラスのプロパティを操作します。

BalloonTipInformationクラスのプロパティ
名前 説明
AutoClose コントロールにフォーカスがなくなった場合に、自動的にバルーンチップを閉じるかどうかを取得または設定します
BackColor バルーンチップの背景色を取得または設定します
Caption バルーンチップのキャプションを取得または設定します
CaptionFont バルーンチップのキャプションのフォントを取得または設定します
CaptionForeColor バルーンチップのキャプションの色を取得または設定します
CustomControl バルーンチップ内に表示するコントロールを取得または設定します
Delay バルーンチップを自動的に閉じるまでの表示時間を取得または設定します
GradientEffect グラデーション効果を取得または設定します
IconType バルーンチップに表示するアイコンを取得または設定します
Shape 形状を取得または設定します
ShowCloseButton バルーンチップに閉じるボタンを表示するかどうかを取得または設定します
Text バルーンチップに表示する文字列を取得または設定します
TextFont バルーンチップのテキストのフォントを取得または設定します
TextForeColor バルーンチップのテキストの色を取得または設定します
UseVisualStyleBackColor ビジュアルスタイルを使用してバルーンチップの背景を描画するかどうかを取得または設定します
バルーンチップエディタでバルーンの設定を行う
バルーンチップエディタでバルーンの設定を行う

バルーンを表示する

 作成したバルーンは、Showメソッドを使用して表示します。ここでは、2番目のTextBoxにマウスポインタを重ねたときにバルーンを表示するようにします。この処理は、MouseHoverイベントハンドラに記述します。Showメソッドの引数にバルーンを表示したいコントロールのオブジェクト名を設定するだけです。

Visual Basic
Private Sub TextBox2_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.MouseHover
    GcBalloonTip1.Show(TextBox2)
End Sub
C#
private void textBox2_MouseHover(object sender, EventArgs e)
{
    gcBalloonTip1.Show(textBox2);
}
マウスポインタを重ねるとバルーンが表示される
マウスポインタを重ねるとバルーンが表示される

バルーンにボタンを組み込む

バルーンの作成

 今度は、バルーンにボタンを組み込み、このボタンのイベント処理を実行できるようにします。

 最初のTextBoxに数字以外の文字が入力された場合は、メッセージボックスではなくバルーンで警告を表示します。バルーンに配置した「クリア」ボタンを押すと、TextBoxの内容をクリアします。

数字以外の文字が入力されているとバルーンで表示し
数字以外の文字が入力されているとバルーンで表示し
「クリア」ボタンを押すとTextBoxの内容をクリアにする
「クリア」ボタンを押すとTextBoxの内容をクリアにする

 この場合は、コードからButtonクラスのインスタンスを作成し、GcBalloonTipコンポーネントのCustomControlプロパティに設定します。

 まずは、Buttonクラスのインスタンスを作成し、イベントハンドラを設定します。

Visual Basic
Imports GrapeCity.Win.Components

Public Class Form1
    Friend WithEvents btn1 As New System.Windows.Forms.Button
C#
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メソッドを使用し、作成した情報とバルーンを組み込むコントロールのオブジェクト名を指定します。

 なお、このイベントハンドラでバルーンに組み込むボタンのテキストも設定しておきます。

Visual Basic
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
C#
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メソッドを使用して行い、数字以外の入力があった場合のみバルーンを表示するようにします。

Visual Basic
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
C#
private void button1_Click(object sender, EventArgs e)
{
    if(Char.IsNumber(textBox1.Text, 0) == false)
    {
        gcBalloonTip1.Show(textBox1);
    }
}

 もう1つは、作成したボタンbtn1のイベントハンドラです。このイベントハンドラは自分で作成します。イベントハンドラ内では、TextBox2の入力をクリアし、フォーカスを移動させます。また、同時にバルーンを閉じる場合は、GcBalloonTipクラスのHideメソッドを実行します。

Visual Basic
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
C#
private void btn1_Click(object sender, EventArgs e)
{
    textBox1.Text = "";
    textBox1.Focus();
    gcBalloonTip1.Hide();
}

まとめ

 GcContainer、GcStylePlusコンポーネントは、VS標準のコントロールの機能を拡張してくれるコントロールです。一味違ったGUIを簡単に作りたい、という方にはぜひお勧めしたいコンポーネントです。

 GcBalloonTipコンポーネントは、メッセージボックスとは違った形で警告やユーザーの意思を受け取ることができるコントロールです。1つだけですが、バルーンの中にコントロールを組み込むことができ、さらにイベント処理も使えるので、アイデア次第でいろいろな用途に用いることができるコンポーネントだと思います。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3415 2009/05/28 13:52

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング