![]() |
連載:.NETグリッド・コントロール大研究第2回 DataGridViewコントロールでマインスイーパデジタルアドバンテージ 遠藤 孝信2006/10/21 |
|
|
前回ではDataGridViewコントロール(以下、DGVコントロール)のオブジェクト構造について解説し、行や列の生成と、それらをDGVコントロールに追加するための基本的なプログラミングについて解説した。そしてDGVコントロールを表示する簡単なサンプル・プログラムを作成した。
DGVコントロールには大きく以下の2つのモードがある。
- 連結モード(バインド・モード)
- 非連結モード(非バインド・モード)
前回のサンプル・プログラムは、後者の非連結モードを利用した例である。今回はまずはこの2つのモードについて簡単に説明し、その後で非連結モードの応用例として別のサンプル・プログラムを作っていく。
連結モードと非連結モード
「連結モード」は、.NET Framework 1.xのころのDataGridコントロールと同様に、データベースから取得したレコードで満たされたデータセットをDGVコントロールに「データ連結(Data Binding)」し、データセットの内容をグリッド表示するモードだ。
![]() |
| DGVコントロールの連結モード |
| データセットと連結することにより、データセットの内容をDGVコントロールのグリッドに自動的に反映できる。また逆に、グリッド上での編集結果をデータセットに反映できる。なおこの図では省略しているが、.NET Framework 2.0では通常はDGVコントロールとデータセットとの間にBindingSourceコントロールを使用する。 |
連結モードでは、DGVコントロールのDataSourceプロパティに、データソースとなるデータセット(あるいはコレクション、配列など)を指定するだけで、その内容が表形式で表示される。つまり、データソースのレコードやデータに従って、DGVコントロール内に行オブジェクトが自動的に作成されるわけだ(デフォルトでは列オブジェクトも自動作成される)。
またDGVコントロールは、データソースを指定しなくても利用できるようになっている。これが「非連結モード」だ。こちらのモードでは列オブジェクトと行オブジェクトをコードにより作成し、自由にデータを表示できる。前回のサンプル・プログラムではこれを行った。
■データバインド列と非バインド列
データ連結の観点からは、DGVコントロールの列にも2つの種類がある。
連結モードでは、グリッドの各列は、データソース内の列(データソースがコレクションや配列の場合には、その要素の特定のプロパティ)に対応付けられている。そのような列は「データバインド列」と呼ばれる。
一方、データソース内の列に対応付けられていない列は「非バインド列」と呼ばれる。当然ながら、非連結モードではすべての列が非バインド列になる。
ただし、連結モードでもすべての列がデータバインド列である必要はなく、非バインド列をDGVコントロールに追加することもできる。通常、この場合には非バインド列のセルには、データバインド列のセルから求められた値を表示する。例えば「合計値列」として使用する非バインド列のセルでは、セルが表示されるタイミングで、その行のほかのセルの値の合計値を求めて表示する。
DGVコントロールを使ったマインスイーパ「Gridスイーパ」
今回は非連結モードの応用例として、DGVコントロールを使ったマインスイーパである「Gridスイーパ」を作ってみようと思う。マインスイーパをご存じない方はいないと思うが、Windowsの[スタート]メニューの[すべてのプログラム]−[ゲーム]−[マインスイーパ]で起動する爆弾撤去ゲームだ。
本物のマインスイーパでは、そのゲーム・フィールドをすべてビットマップで表示しているが、Gridスイーパではフィールド表示にグリッドを利用する。以下がGridスイーパの実行画面だ。
![]() ![]() |
| 実行中のGridスイーパの画面(上:ゲーム中、左下:失敗時、右下:成功時) |
このGridスイーパでは、マウスのクリックや[スペース]キーにより、セルを開いていく。間違って爆弾のあるセル(爆弾セル)を開くと撤去失敗であり、爆弾セルを赤色で表示する(上記画面左下)。爆弾セル以外のすべてのセルを開ければ、爆弾セルが緑色で表示され、撤去成功となる(上記画面右下)。また、[F2]キーを押すことにより、いつでもゲームを再スタートすることができる。
なおコードを極力短くするため、マインスイーパにはある以下のような機能は実装しない。
- 旗が立てられない
- 時間制ではない
- 数字の色が全部同じ
以下にGridスイーパの全コード(Visual Studio 2005のプロジェクト)をダウンロードできるようにした(ソース・コードについては次ページにも掲載している)。
VB版Gridスイーパのダウンロード
C#版Gridスイーパのダウンロード
ではさっそくプログラミングしていこう。
| INDEX | ||
| .NETグリッド・コントロール大研究 | ||
| 第2回 DataGridViewコントロールでマインスイーパ | ||
| 1.連結モードと非連結モード | ||
| 2.フォームの設定とソース・コード | ||
| 3.DGVコントロールとゲーム・フィールドの初期化/セルの選択を禁止 | ||
| 4.セルのクリック処理/キー入力の処理/セルのオープン | ||
| 「.NETグリッド・コントロール大研究」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
は.NET開発者中心に生まれ変わりました
スポンサーからのお知らせ
.NET開発者中心コーナー
- - PR -
イベントカレンダー
- - PR -





