連載:Windowsフォーム開発入門【Visual Studio 2010対応】
Windowsフォームにおける「データ・バインディング」 初音 玲2010/11/16 |
|
|
■(2)データ・バインディングで「現在行のデータを表示」
TextBoxコントロールにXMLファイルの内容を表示するサンプルを用いて、データ・バインディングで1行のデータを表示する方法を説明する。
今回作成したサンプルは、下記のリンクからダウンロードできる。
●Windowsフォーム画面をデザインする
図5 1行表示のWindowsフォーム画面デザイン例 |
XMLファイルの1行分のデータを表示するWindowsフォーム画面デザインとして図5のようなデザインを考えてみた。
(メニューバーの)[ファイル]メニューには、[開く]や[保存]などのサブメニューがあり、XMLファイルとの入出力が行える。
各TextBoxコントロールと各CheckBoxコントロールがデータセットに読み込まれたXMLファイルの内容を表示するコントロールであり、これらのコントロールにデータ・バインディング行う。
Windowsフォーム画面の最下部にあるバー(※コンポーネント・トレイのことではない)は、データ・バインディングしたデータの現在行を移動するためのBindingNavigatorコントロール(変数名は「XML_ BindingNavigator」)だ。TextBoxコントロールやCheckBoxコントロールに表示されるデータは、現在行のデータになるので、BindingNavigatorコントロール(上にある左向きや右向きの三角ボタンなど)を操作することで、表示が次々と変わっていく。
なお、BindingNavigatorコントロールのBindingSourceプロパティにはBindingSourceコンポーネント(サンプルでは「XML_BindingSource」という変数)を設定して、BindingNavigatorコントロールと対象となるデータ・バインディングをひも付けて(=バインディングして)おく必要がある。
●データ・バインディングを実装する
今回のサンプル・プログラムでは、(メニューバーの)[ファイル]−[開く]メニューを選択すると、XMLファイルから読み込んだデータを、各コントロールに表示する(図6を参照)。
図6 各TextBox/CheckBoxコントロールに現在行のデータを表示するサンプルの実行例 |
|
||
リスト5 データセットの「data」データテーブルの内容を1レコード分画面に表示するコード(上:VB、下:C#) |
データセットにXMLファイルの内容を読み込んだら、AcceptChangesメソッドを実行して、全行のRowStateプロパティの値を「Add」から「Unchanged」にする。
データセットのデータテーブルを、BindingSourceコンポーネントのデータソースとして指定する。これでデータテーブルとBindingSourceコンポーネントがデータ・バインディングできたことになる。
次に、各コントロールのDataBindingsコレクション・プロパティにBindingSourceコンポーネント(=データセットとの仲介役)を割り当てていく(=バインディング)。例えばTextBoxコントロールのTextプロパティに、データテーブルの[日付]列の値をバインディングしたいときは、「New Binding("Text", Me.XML_BindingSource, "日付",True)」のようなコードで、先ほどデータ・バインディングしたBindingSourceコンポーネントを引数にしてAddメソッドを実行する。
なぜ単一オブジェクトのプロパティではなくコレクション・プロパティかといえば、コントロールにバインディングする(=ひも付ける)のではなく、コントロールのプロパティに対してバインディングをするために、コントロールからみれば複数のバインディングを定義できるコレクションとなるわけだ。どのようなプロパティにバインディングができるのかといえば、[プロパティ]ウィンドウの[(DataBindings)]プロパティの「(詳細)」をクリックして[フォーマットと詳細バインド]ダイアログを表示すれば確認できる。
図7 [フォーマットと詳細バインド]ダイアログ |
CheckBoxコントロールでは、チェックボックスがチェックされているか/いないかを、Checkedプロパティで取得・設定する場合が多い。が、データセット(特にRDBMS)とデータ・バインディングするときには、(Checkedプロパティではなく)CheckStateプロパティの方が使いやすい。CheckStateプロパティは次のような値を取る。
CheckStateプロパティ値 | 意味 |
0 | チェックしていない |
1 | チェックしている |
2 | 「0」「1」以外 |
表1 CheckStateプロパティに指定できる値 |
INDEX | ||
[連載]Windowsフォーム開発入門【Visual Studio 2010対応】 | ||
Windowsフォームにおける「データ・バインディング」 | ||
1.データ・バインディングで「複数行のデータを表示」 | ||
2.データ・バインディングで「現在行のデータを表示」 | ||
3.データ・バインディングで「選択候補としてデータを表示」 | ||
「Windowsフォーム開発入門」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -