はじめに
狭いフォームを有効活用するコントロールは多くありますが、「PlusPak for Windows Forms 6.0J」のGcComboFrameコントロールは、独自のドロップダウンウィンドウを構築することで、少ない面積で柔軟性の高い入力を実現するコントロールです。
コンテントパネルには好きなコントロールを配置し、ドロップダウンウィンドウに組み込んだコントロールと連動して動作させることで、必要な時だけウィンドウをドロップダウン表示し、入力補助機能として使用することができます。
そこで今回は、SQL Serverのデータベースに連結したFlexGridコントロールをドロップダウンウィンドウに組み込み、グリッドデータをクリックするだけで必要なデータを入力することができるアプリケーションを作成してみました。
対象読者
Visual Basic 2005/2008/2010、またはVisual C# 2005/2008/2010を使ってプログラムを作ったことがある人。
必要な環境
Visual Basic 2005/2008/2010、Visual C# 2005/2008/2010、Visual Studio 2005/2008/2010のいずれかでプログラムが作れる環境。
なお、本プログラムはWindows 7上で動作するVisual Studio 2010を使用して作成し、動作確認を行っています。
プログラム実行時の注意事項
本プログラムは、「PowerTools ComponentOne Studio 2012J」および「PlusPak for Windows Forms 6.0J」を使用して作成しています。そのため、アプリケーションを配布する場合は、「PowerTools ComponentOne Studio 2012J」と「PlusPak for Windows Forms 6.0J」のアセンブリファイルを添付する必要があります。これは、Common Language RuntimeのDLLをアプリケーションと一緒に配布するのと同じです。
本記事のサンプルアプリケーションを正常に動作させるためには、次のファイルをインストールする必要があります。
ファイル名 | 説明 |
C1.Win.C1FlexGrid.2.dll | 本体アセンブリ |
C1.Win.C1FlexGrid.4.dll | 本体アセンブリ(※) |
GrapeCity.Win.PlusPak.v60.dll | 本体アセンブリ |
GrapeCity.Framework.PlusPak.v21.dll | 製品フレームワーク |
このファイルを、プログラムを実行するフォルダに格納します。
.NET Framework 2.0から追加されたクラスやメンバを使用しているので、.NET Framework 2.0以上のバージョンの.NET Frameworkがインストールされていることが必須条件です。
コンポーネントのインストール
「PowerTools ComponentOne Studio 2012J」および「PlusPak for Windows Forms 6.0J」を使用する方は、Visual Studio、Visual Basic、Visual C#の開発環境に、「PowerTools ComponentOne Studio 2012J」と「PlusPak for Windows Forms 6.0J」をインストールする必要があります。
インストーラは、グレープシティのWebページからダウンロードできます。
ダウンロードしたい製品にチェックを付け[申込フォーム]ボタンを押すと、「トライアル版申込フォーム」ページに移動しますので、「個人情報の収集および使用に同意する」にチェックを入れ「同意する」ボタンをクリックします。
トライアル申込フォームが表示されますので、必要情報を登録すると添付トライアルライセンスキーファイルとダウンロードサイトを記載したE-Mailが送られてきます。ここからダウンロードします。ダウンロードファイルは圧縮ファイルになっていますので、解凍してインストーラを起動します。
制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。
コントロール/コンポーネントの追加
「PowerTools ComponentOne Studio 2012J」および「PlusPak for Windows Forms 6.0J」をインストールしたら、プロジェクトにコントロール/コンポーネントを追加します。
ツールボックスに専用のタブを作成し、使用するコンポーネント/コンポーネントを追加します。追加対象はアセンブリ名が「C1.Win.C1FlexGrid.4」の「C1FlexGrid」コントロールと、「GrapeCity.Win.PlusPak.v60」の「GcComboFrame」「GcBalloonTip」コンポーネントです。
コントロール/コンポーネント | アセンブリ |
C1FlexGrid | C1.Win.C1FlexGrid.4 |
GcComboFrame | GrapeCity.Win.PlusPak.v60 |
GcBalloonTip | GrapeCity.Win.PlusPak.v60 |
GcComboFrameコントロールについて
GcComboFrameコントロールの概要については、過去の記事『独自のドロップダウンウィンドウを持った.NETアプリケーションの作成』で紹介していますので、そちらを参照してください。
この時の記事のサンプルアプリケーションは入力に電卓コントロールを使いましたが、今回はデータベースのデータをグリッドで表示し、必要なデータのあるセルをクリックするだけで入力できるアプリケーションを作成しています。
そのため、GcComboFrameコントロールのコンテントパネルにLabelとNumericUpDownコントロールを配置し、ドロップダウンウィンドウにC1FlexGridコントロールを配置して使用します。
GcBalloonTipコンポーネントについて
GcBalloonTipコンポーネントは、過去の記事『カスタムバルーンチップを持った.NETアプリケーションを作る』で使用していますが、バージョンが1つ前のものであることと、GcBalloonTipコンポーネントについて詳しく触れていませんので、補足を含めて概要を紹介しておきます。
GcBalloonTipコンポーネントの概要
GcBalloonTipコンポーネントは、フォーム上に配置されたコントロールにバルーンチップを表示できるようにする拡張コンポーネントです。
標準コンポーネントのToolTipコンポーネントに比べ豊富なデザイン機能を持ち、表示位置の指定や背景色のグラデーション設定、バルーン内へのコントロールの追加機能など、単なるTips表示にとどまらず多彩な用途に使用できるコンポーネントです。
そして、専用のデザイナを持ち、以下のプロパティを操作することで外観の装飾や動作を設定することができます。
プロパティ | 説明 |
BackColor | バルーンチップの背景色 |
Caption | バルーンチップのキャプション |
CaptionFont | キャプションのフォント |
CaptionCoreColor | キャプションの色 |
Delay | 自動的に閉じるまでの時間 |
GradientEffect | バルーンチップの背景のグラデーション |
IconType | バルーンチップに表示するアイコンの種類 |
MaxHeight | バルーンチップの高さの上限 |
MaxWidth | バルーンチップの幅の上限 |
Shape | バルーンチップの形 |
ShowCloseButton | 閉じるボタンを表示するかどうか |
Text | バルーンチップに表示するテキスト |
TextFont | テキストのフォント |
TextForeColor | テキストの色 |
UseVisualStyleBackColor |
視覚スタイルがサポートされている場合、 視覚スタイルを使用して背景を描画するかどうか |
GcBalloonTipコンポーネントをフォームに配置するとフォーム上の各コントロールのプロパティウィンドウに「GcBalloonTip1のBalloonTipInfo」プロパティが追加されます。
そして、右側に表示されるボタンをクリックすると、バルーンチップの設定を行うバルーンチップエディタが表示されます。
このエディタを使用して、コントロールごとにToolTipを設定します。


背景色の変更やグラデーションを設定する場合は、「UseVisualStyleBackColor」を「False」に設定してから行います。また、バルーンにはキャプションとメッセージの2つを設定します。
バルーンを使えるようにするには、Showメソッドを実行します。
どのタイミングでバルーンを表示するのかは、各コントロールのイベントで決めます。そして、そのイベントハンドラでShowメソッドを実行します。
例えば、Buttonコントロールにマウスポインタが重なった時にバルーンを表示したければ、MouseHoverイベントハンドラでShowメソッドを実行するコードを記述します。
Showメソッドはオーバーロードされており、引数はメソッドごとに違いますが、一番簡単な書式のShowメソッドでは、引数にバルーンを表示させるコントロール名を指定します。
次のコードは、Buttonコントロールにマウスポインタが重なった時に、Buttonコントロールの上にバルーンを表示させます。
Private Sub Button1_MouseHover(sender As System.Object, e As System.EventArgs) Handles Button1.MouseHover GcBalloonTip1.Show(Button1) End Sub
private void button1_MouseHover(object sender, EventArgs e) { gcBalloonTip1.Show(button1); }
Show(Point, BalloonTipInformation) Show(Control) Show(Control, TipPosition) Show(Control, TipPosition, BalloonTipInformation) Show(Control, Rectangle, BalloonTipInformation) Show(Control, Rectangle, TipPosition, BalloonTipInformation)
Showメソッドのパラメータの一つ「TipPosition」を使って、バルーンチップの表示位置を設定することができます。設定値はTipPosition列挙のメンバです。

メンバ名 | 説明 |
0 - TopLeft | コントロールの左上端を示します。 |
1 - TopCenter | コントロールの中央上端を示します。 |
2 - TopRight | コントロールの右上端を示します。 |
3 - BottomLeft | コントロールの左下端を示します。 |
4 - BottomCenter | コントロールの中央下端を示します。 |
5 - BottomRight | コントロールの右下端を示します。 |
また、Showメソッドのパラメータ「control」と「rectangle」を使って、グリッドコントロール内の特定のセルにバルーンチップを表示することが可能です。

バルーンチップのウィンドウの中にはコントロールを追加して独自のバルーンチップを作ることができます。その際のコントロールの配置は、バルーンチップ内のテキストの下側に配置することができます。
バルーンチップの大きさは追加されたコントロールのサイズによって自動的にサイズが調整されます。バルーンチップが表示可能なサイズの上限はMaxWidthとMaxHeightプロパティで設定でき、デフォルトでは、幅(MaxWidth)は600ピクセルで、高さ(MaxHeight)には制限は設定されていません。貼り付けたコントロールのサイズが大きくバルーンチップ内に表示しきれない場合は、スクロールバーが表示されます。

GUIのデザイン
では、さっそくプログラムを作成しましょう。
作成するプログラムは、SQL Server(2008 R2)で作成したサンプルデータベース「仕入れ商品一覧_Data.mdf」から、テーブル「製品リスト」にあるデータをすべて取出し、C1FlexGridコントロールで表示します。そして、このC1FlexGridコントロールをGcComboFrameコントロールに連結させ、ドロップダウンウィンドウで表示するようにします。
GcComboFrameコントロールは、LabelコントロールとNumericUpDownコントロールをコンテントパネルに組み込み、C1FlexGridコントロールで選択された行データをLabelコントロールで表示します。
データを表示するタイミングは、C1FlexGridコントロールの任意の行のセルがクリックされた時点で、処理はこのコントロールのClickイベントハンドラで行います。
GcComboFrameコントロールは全部で5セット作成し、5つのデータを表示できるようにしますが、最初のGcComboFrameコントロールだけ有効にし、残りの4つは無効にしておきます。 上から順番にグリッドでデータが選択され表示された時点で、次のGcComboFrameコントロールを有効にします。
また、C1FlexGridコントロールはGcComboFrameコントロール1つにつき1つ用意する必要がありますので、C1FlexGridコントロールも5つ用意します。これらのコントロールは、1つ作成したらコピーアンドペーストで複製を作成して使用するようにします。
フォームのデザイン
フォームには、C1FlexGridコントロール、GcComboFrameコントロール、GcBalloonTipコンポーネントとGroupBoxコントロールを使用します。GcComboFrameコントロールには、5つのLabelコントロールと1つのNumericUpDownコントロールを組み込みます。
C1FlexGridコントロールは、今回はフォームデザイン時からデータベースを組み込み、すべてのフィールドデータを表示するように設定します。各コントロールの設定は、作成手順の中で説明します。
C1FlexGridコントロールの作成
最初に、C1FlexGridコントロールを作成します。というのも、C1FlexGridコントロールをGcComboFrameコントロールに連結すると、C1FlexGridコントロールは非表示になってしまい、この後の編集操作が少しやりづらくなってしまうためです。
C1FlexGridコントロールには、SQL Serverで作成したデータベース「仕入れ商品一覧_Data.mdf」を連結し、テーブル「製品リスト」にあるデータをすべて取出し表示します。
また、グリッドでクリックされたデータを取り出す処理を作成するため、Clickイベントハンドラも作成します。
そして、作成したC1FlexGridコントロールをコピーし、全部で5つ作成します。
(1)まずはGroupBoxコントロールを1つ配置し、GcComboFrameコントロールを配置する場所を確保しておきます。なお、ここではフォームの背景色を「BlanchedAlmond」に変更しています。
(2)ツールボックスからC1FlexGridコントロールをフォームにドラッグアンドドロップします。そして、Sizeプロパティの値を「660,230」にしておきます。これは、あとでGcComboFrameコントロールのドロップダウンウィンドウを表示する時に、グリッドのすべてのフィールドデータが表示されるサイズにしています。
(3)C1FlexGridコントロールのスマートタグから、「データソース-プロジェクトデータソースの追加」を選びます。
(4)データソース構成ウィザードが起動しますので、「データベース」を選び「次へ」ボタンをクリックします。
(5)「データセット」を選び「次へ」ボタンをクリックします。
(6)「新しい接続」ボタンをクリックし、「データソース」を「Microsoft SQL Serverデータベースファイル」に変更します。そして、「データベースファイル名」の「参照」ボタンをクリックし、データベース「仕入れ商品一覧_Data.mdf」を選択します。
「仕入れ商品一覧_Data.mdf」を選択

(7)「サーバにログオンする」で「Windows認証を使用する」が選ばれていることを確認し、「テスト接続」ボタンをクリックして接続に成功することを確認します。

(8)OKボタンをクリックし「次へ」ボタンをクリックします。プロジェクトにデータファイルをコピーするかどうかを聞いてきますので、そのまま「はい」ボタンをクリックします。そして、「次へ」ボタンをクリックします。
(9)「データベースオブジェクトの選択」ページに移りますので、「テーブル-製品リスト」をクリックし、「完了」ボタンをクリックします。

(10)再度C1FlexGridコントロールのスマートタグを表示し「データのプレビュー」を選びます。そして、「データのプレビュー」ウィンドウで「プレビュー」ボタンをクリックし、データベースのデータが表示されることを確認します。
(11)C1FlexGridコントロールのプロパティウィンドウで「AutoResize」プロパティを「True」にします。これで、グリッドの各列幅はセルの内容に自動的に調節されます。ここでプログラムを実行し、データベースファイルのデータがグリッドに表示されることを確認します。
(12)作成したC1FlexGridコントロールを4つコピーします。設定したデータベースの連結は、コピーしたC1FlexGridコントロールにもそのまま受け継がれます。
(13)作成したすべてのC1FlexGridコントロールのClickイベントハンドラを作成します。
GcComboFrameコントロールの作成
続いて、GcComboFrameコントロールを作成します。
(1)すでにGroupBoxコントロールを配置してあるので、その中にGcComboFrameコントロールを配置します。
(2)Labelコントロールを6つ配置し、列見出しを作成します。そして、GcComboFrameコントロールのコンテンツエリアに、Labelコントロールを5つ、NumericUpDownコントロールを1つ配置します。Labelコントロールは、Textプロパティの値を削除し、BorderStyleプロパティを「Fixed3D」に、BackColorプロパティを「White」にします。
(3)GcComboFrameコントロールのプロパティウィンドウで「DropDownSettings」プロパティを展開し、「AutoSize」プロパティを「True」にします。これで、ドロップダウンウィンドウのサイズがC1FlexGridコントロールのサイズに合わせられます。
(4)作成したGcComboFrameコントロールを4つコピーし、GroupBoxコントロール内に均等に並べます。
なお、GcComboFrameコントロールをコピーすると、中に組み込んだLabelコントロールのオブジェクト名(Name)が右から連番で自動的に付与されていきます。なので、これを左から連番になるように修正しておいてください(あとでコードでデータを転送する際に混乱しないようにするためです)。
コピー直後のLabelコントロールの並び順: | Label16 Label15 Label14 Label13 Label12 |
---|---|
修正後の並び順: | Label12 Label13 Label14 Label15 Label16 |
(5)最初に作成したGcComboFrameコントロールのスマートタグを開き、「ドロップダウンコントロール」のリストから「C1FlexGrid1」を選びます。
これで、C1FlexGridコントロールはGcComboFrameコントロールに連結し、ドロップダウンウィンドウで表示されるようになります。そして、フォームにあった「C1FlexGrid1」コントロールは非表示になります。
C1FlexGrid1コントロールにアクセスするには、Visual Studioのプロパティウィンドウの上部にあるコンボボックスを開いてC1FlexGrid1を選択します。

(6)同様の手順で、順番にGcComboFrameコントロールの「ドロップダウンコントロール」にC1FlexGridコントロールを組み込んでいきます。
組み込んだらプログラムを実行させ、GcComboFrameコントロールのドロップダウンボタンをクリックしてC1FlexGridコントロールが表示されるのを確認します。
(7)最後のGcComboFrameコントロールだけ、ドロップダウンウィンドウをコントロールの右側に表示するようにします。GcComboFrameコントロール(GcComboFrame5)のスマートタグを開き、「ドロップダウンの方向」のリストから「Right」を選びます。これで、このコントロールだけドロップダウンウィンドウはコントロールの右横に表示されます。

(8)バルーンチップ表示のために、すべてのGcComboFrameコントロールのMouseHoverイベントハンドラを作成します。
(9)そして、最初のGcComboFrameコントロール以外は、Enabledプロパティを「False」に設定し無効にしておきます。
バルーンチップの作成
フォームにボタンを1つ作成し、GcComboFrameコントロールとButtonコントロールにバルーンチップを設定します。
(1)フォームにButtonコントロールを配置し、Textプロパティを「発注依頼書作成」に変更します。そして、「MouseHover」「Click」の2つのイベントハンドラを作成します。
(2)ツールボックスからGcBalloonTipコンポーネントをフォームにドラッグアンドドロップします。
(3)今作成したButtonコントロールのプロパティウィンドウに、「GcBalloonTip1のBalloonTipInfo」プロパティが追加されています。ボタンのスマートタグを開くと、「GcBalloonTip1により追加するバルーンチップ」というメニューが追加されているのでこれをクリックします。

(4)「バルーンチップエディタ」が表示されますので、次のプロパティを設定しバルーンチップを作成します。
プロパティ | 設定値 | |||
Delay | 1000 | |||
Caption | 発注依頼書の発行 | |||
GradientEffect | Direction | Side | ||
EndColor | DarkSalmon | |||
StartColor | Red | |||
Style | DiagonalUp | |||
IconType | Exclamation | |||
Text | 今回はメッセージの表示のみ動作します | |||
TextFontColor | Black | |||
UseVisibleStyleBackColor | False |
これで、図のようなバルーンチップができ上がります。

(5)GcComboFrameコントロール「GcComboFrame1」を選択し、同じくスマートタグの「GcBalloonTip1により追加するバルーンチップ」メニューをクリックします。そして、バルーンチップエディタで、次のプロパティを設定しバルーンチップを作成します。
プロパティ | 設定値 | |||
Delay | 1000 | |||
Caption | 商品選択 | |||
GradientEffect | Direction | Side | ||
EndColor | PaleTurquoise | |||
StartColor | SkyBlue | |||
Style | DiagonalUp | |||
Text | ボタンをクリックすると商品を選ぶことができます | |||
TextFontColor | Blue | |||
UseVisibleStyleBackColor | False |

(6)同じ操作を残りのGcComboFrameコントロールに対して行います。
グリッドのデータ転送とバルーンチップの表示処理
グリッドのデータをクリックすると、GcComboFrameコントロールのLabelコントロールに転送する処理と、バルーンチップを表示する処理を作成します。
なお、フォームのLoadイベントハンドラは、C1FlexGrid1コントロールにデータベースを連結した時に自動的に作成されたコードが記述されています。
グリッドのデータ転送処理
この処理は、C1FlexGridコントロールのClickイベントハンドラに作成します。
グリッドのセルがクリックされると、Rowプロパティにその行番号が格納されますので、そのまま行番号と列番号を指定して、セルの値をGcComboFrameコントロールに配置したLabelコントロールのTextプロパティに順番に代入していきます。
C1FlexGrid1からC1FlexGrid4までは、最初のLabelコントロールに値が代入された時点で、次のGcComboFrameコントロールを有効にする処理を組み込みます。
これで、グリッドのセルをどれか1つクリックすれば、その行のデータがすべてLabelコントロールに転送されます。
Private Sub C1FlexGrid1_Click(sender As System.Object, e As System.EventArgs) Handles C1FlexGrid1.Click Dim i As Integer = C1FlexGrid1.Row Label7.Text = C1FlexGrid1(i, 2).ToString() Label8.Text = C1FlexGrid1(i, 3).ToString() Label9.Text = C1FlexGrid1(i, 4).ToString() Label10.Text = C1FlexGrid1(i, 5).ToString() Label11.Text = C1FlexGrid1(i, 6).ToString() If Label7.Text <> "" Then GcComboFrame2.Enabled = True End If End Sub Private Sub C1FlexGrid2_Click(sender As System.Object, e As System.EventArgs) Handles C1FlexGrid2.Click Dim i As Integer = C1FlexGrid1.Row Label12.Text = C1FlexGrid1(i, 2).ToString() Label13.Text = C1FlexGrid1(i, 3).ToString() Label14.Text = C1FlexGrid1(i, 4).ToString() Label15.Text = C1FlexGrid1(i, 5).ToString() Label16.Text = C1FlexGrid1(i, 6).ToString() If Label12.Text <> "" Then GcComboFrame3.Enabled = True End If End Sub Private Sub C1FlexGrid3_Click(sender As System.Object, e As System.EventArgs) Handles C1FlexGrid3.Click Dim i As Integer = C1FlexGrid1.Row Label17.Text = C1FlexGrid1(i, 2).ToString() Label18.Text = C1FlexGrid1(i, 3).ToString() Label19.Text = C1FlexGrid1(i, 4).ToString() Label20.Text = C1FlexGrid1(i, 5).ToString() Label21.Text = C1FlexGrid1(i, 6).ToString() If Label17.Text <> "" Then GcComboFrame4.Enabled = True End If End Sub Private Sub C1FlexGrid4_Click(sender As System.Object, e As System.EventArgs) Handles C1FlexGrid4.Click Dim i As Integer = C1FlexGrid1.Row Label22.Text = C1FlexGrid1(i, 2).ToString() Label23.Text = C1FlexGrid1(i, 3).ToString() Label24.Text = C1FlexGrid1(i, 4).ToString() Label25.Text = C1FlexGrid1(i, 5).ToString() Label26.Text = C1FlexGrid1(i, 6).ToString() If Label22.Text <> "" Then GcComboFrame5.Enabled = True End If End Sub Private Sub C1FlexGrid5_Click(sender As System.Object, e As System.EventArgs) Handles C1FlexGrid5.Click Dim i As Integer = C1FlexGrid1.Row Label27.Text = C1FlexGrid1(i, 2).ToString() Label28.Text = C1FlexGrid1(i, 3).ToString() Label29.Text = C1FlexGrid1(i, 4).ToString() Label30.Text = C1FlexGrid1(i, 5).ToString() Label31.Text = C1FlexGrid1(i, 6).ToString() End Sub
private void c1FlexGrid1_Click(object sender, EventArgs e) { int i = c1FlexGrid1.Row; label7.Text = c1FlexGrid1[i, 2].ToString(); label8.Text = c1FlexGrid1[i, 3].ToString(); label9.Text = c1FlexGrid1[i, 4].ToString(); label10.Text = c1FlexGrid1[i, 5].ToString(); label11.Text = c1FlexGrid1[i, 6].ToString(); if(label7.Text != "") { gcComboFrame2.Enabled = true; } } private void c1FlexGrid2_Click(object sender, EventArgs e) { int i = c1FlexGrid1.Row; label12.Text = c1FlexGrid1[i, 2].ToString(); label13.Text = c1FlexGrid1[i, 3].ToString(); label14.Text = c1FlexGrid1[i, 4].ToString(); label15.Text = c1FlexGrid1[i, 5].ToString(); label16.Text = c1FlexGrid1[i, 6].ToString(); if (label12.Text != "") { gcComboFrame3.Enabled = true; } } private void c1FlexGrid3_Click(object sender, EventArgs e) { int i = c1FlexGrid1.Row; label17.Text = c1FlexGrid1[i, 2].ToString(); label18.Text = c1FlexGrid1[i, 3].ToString(); label19.Text = c1FlexGrid1[i, 4].ToString(); label20.Text = c1FlexGrid1[i, 5].ToString(); label21.Text = c1FlexGrid1[i, 6].ToString(); if (label17.Text != "") { gcComboFrame4.Enabled = true; } } private void c1FlexGrid4_Click(object sender, EventArgs e) { int i = c1FlexGrid1.Row; label22.Text = c1FlexGrid1[i, 2].ToString(); label23.Text = c1FlexGrid1[i, 3].ToString(); label24.Text = c1FlexGrid1[i, 4].ToString(); label25.Text = c1FlexGrid1[i, 5].ToString(); label26.Text = c1FlexGrid1[i, 6].ToString(); if (label22.Text != "") { gcComboFrame5.Enabled = true; } } private void c1FlexGrid5_Click(object sender, EventArgs e) { int i = c1FlexGrid1.Row; label27.Text = c1FlexGrid1[i, 2].ToString(); label28.Text = c1FlexGrid1[i, 3].ToString(); label29.Text = c1FlexGrid1[i, 4].ToString(); label30.Text = c1FlexGrid1[i, 5].ToString(); label31.Text = c1FlexGrid1[i, 6].ToString(); }
バルーンチップ表示の処理
バルーンチップの表示は、ButtonコントロールとGcComboFrameコントロールに、それぞれトリガーとなるイベントハンドラを作成していますので、そこでShowメソッドを実行します。
Showメソッドでは、表示するコントロールのオブジェクト名と、バルーンの表示位置を指定するTipPosition列挙体のメンバ「BottomRight」を指定します。
これで、Buttonコントロールは上にマウスポインタが重なるとバルーンが表示され、GcComboFrameコントロールはドロップダウンボタンにマウスポインタが重なるとバルーンが表示されます。ただし、GcComboFrameコントロールが無効状態だとバルーンは表示されません。
また、最後にButtonコントロールのClickイベントハンドラで、メッセージボックスと「PlusPak for Windows Forms 6.0J」の製品情報を表示する処理を記述します。
Private Sub GcComboFrame1_MouseHover(sender As System.Object, e As System.EventArgs) Handles GcComboFrame1.MouseHover GcBalloonTip1.Show(GcComboFrame1, GrapeCity.Win.Components.TipPosition.BottomRight) End Sub Private Sub GcComboFrame2_MouseHover(sender As System.Object, e As System.EventArgs) Handles GcComboFrame2.MouseHover GcBalloonTip1.Show(GcComboFrame2, GrapeCity.Win.Components.TipPosition.BottomRight) End Sub Private Sub GcComboFrame3_MouseHover(sender As System.Object, e As System.EventArgs) Handles GcComboFrame3.MouseHover GcBalloonTip1.Show(GcComboFrame3, GrapeCity.Win.Components.TipPosition.BottomRight) End Sub Private Sub GcComboFrame4_MouseHover(sender As System.Object, e As System.EventArgs) Handles GcComboFrame4.MouseHover GcBalloonTip1.Show(GcComboFrame4, GrapeCity.Win.Components.TipPosition.BottomRight) End Sub Private Sub GcComboFrame5_MouseHover(sender As System.Object, e As System.EventArgs) Handles GcComboFrame5.MouseHover GcBalloonTip1.Show(GcComboFrame5, GrapeCity.Win.Components.TipPosition.BottomRight) End Sub Private Sub Button1_MouseHover(sender As System.Object, e As System.EventArgs) Handles Button1.MouseHover GcBalloonTip1.Show(Button1) End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click MessageBox.Show("発注依頼書を送信しました") GcComboFrame1.AboutBox() End Sub
private void gcComboFrame1_MouseHover(object sender, EventArgs e) { gcBalloonTip1.Show(gcComboFrame1, GrapeCity.Win.Components.TipPosition.BottomRight); } private void gcComboFrame2_MouseHover(object sender, EventArgs e) { gcBalloonTip1.Show(gcComboFrame2, GrapeCity.Win.Components.TipPosition.BottomRight); } private void gcComboFrame3_MouseHover(object sender, EventArgs e) { gcBalloonTip1.Show(gcComboFrame3, GrapeCity.Win.Components.TipPosition.BottomRight); } private void gcComboFrame4_MouseHover(object sender, EventArgs e) { gcBalloonTip1.Show(gcComboFrame4, GrapeCity.Win.Components.TipPosition.BottomRight); } private void gcComboFrame5_MouseHover(object sender, EventArgs e) { gcBalloonTip1.Show(gcComboFrame5, GrapeCity.Win.Components.TipPosition.BottomRight); } private void button1_MouseHover(object sender, EventArgs e) { gcBalloonTip1.Show(button1); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show("発注依頼書を送信しました"); gcComboFrame1.AboutBox(); }
まとめ
入力支援用コントロールは、常に表示しておきたいコントロールと違い、使いたい時だけ表示されればよいので、グリッドコントロールなどのようにフォームの面積を広く使うコントロールを、ドロップダウンウィンドウに格納できるGcComboFrameコントロールは、フォームデザイン上とても高い効果を生み出します。
さらに、ドロップダウンウィンドウに配置したコントロールは、他のコントロールと連動してデータ転送などが行えるわけですから、多くのデータを1つのフォーム内で処理したい、というアプリケーションにはおすすめのコントロールといえます。