SHOEISHA iD

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

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

ComponentZine(PlusPak)

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

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

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

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

バルーンの作成

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

 最初の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つだけですが、バルーンの中にコントロールを組み込むことができ、さらにイベント処理も使えるので、アイデア次第でいろいろな用途に用いることができるコンポーネントだと思います。

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

  • このエントリーをはてなブックマークに追加
ComponentZine(PlusPak)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング