■サンプル・コードのまとめ
最後に、ここまでのコードを実際にコンパイルして実行できるようにしたソース・コードを次に示しておく。
' firstdgv.vb
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Public Class MyForm
Inherits Form
Shared Sub Main()
Application.Run(New MyForm())
End Sub
Dim dgv As DataGridView
Sub New()
dgv = New DataGridView() ' DGVのインスタンス化
dgv.Dock = DockStyle.Fill ' フォームの全面に配置
' ユーザーによる新しい行の追加禁止
dgv.AllowUserToAddRows = False
' ユーザーによる行の変更、削除の禁止
dgv.ReadOnly = True
' 行の高さの自動調整
dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
Me.Controls.Add(dgv)
InitializeDGV()
FillDGV()
End Sub
Sub InitializeDGV()
Dim column1 As New DataGridViewTextBoxColumn
column1.HeaderText = "1列目の見出し"
dgv.Columns.Add(column1)
Dim column2 As New DataGridViewImageColumn
column2.HeaderText = "2列目の見出し"
dgv.Columns.Add(column2)
End Sub
Sub FillDGV()
dgv.Rows.Add("Asterisk", SystemIcons.Asterisk)
dgv.Rows.Add("Error", SystemIcons.Error)
dgv.Rows.Add("Exclamation", SystemIcons.Exclamation)
dgv.Rows.Add("Question", SystemIcons.Question)
End Sub
End Class
// firstdgv.cs
using System;
using System.Drawing;
using System.Windows.Forms;
public class MyForm : Form {
static void Main() {
Application.Run(new MyForm());
}
DataGridView dgv;
public MyForm() {
dgv = new DataGridView(); // DGVのインスタンス化
dgv.Dock = DockStyle.Fill; // フォームの全面に配置
// ユーザーによる新しい行の追加禁止
dgv.AllowUserToAddRows = false;
// ユーザーによる行の変更、削除の禁止
dgv.ReadOnly = true;
// 行の高さの自動調整
dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
this.Controls.Add(dgv);
InitializeDGV();
FillDGV();
}
void InitializeDGV() {
DataGridViewTextBoxColumn column1 = new DataGridViewTextBoxColumn();
column1.HeaderText = "1列目の見出し";
dgv.Columns.Add(column1);
DataGridViewImageColumn column2 = new DataGridViewImageColumn();
column2.HeaderText = "2列目の見出し";
dgv.Columns.Add(column2);
}
void FillDGV() {
dgv.Rows.Add("Asterisk", SystemIcons.Asterisk);
dgv.Rows.Add("Error", SystemIcons.Error);
dgv.Rows.Add("Exclamation", SystemIcons.Exclamation);
dgv.Rows.Add("Question", SystemIcons.Question);
}
}
プログラム内のコメントにもあるように、ここではDGVコントロールを表示専用として利用するために「AllowUserToAddRowsプロパティ」と「ReadOnlyプロパティ」の2つを設定している。デフォルトでは既存のセルの値を編集したり、一番下に表示される空の行から新しい行を追加したりすることができる。DGVコントロールの編集機能についてはいずれ取り上げる予定だ。
またDGVコントロールには、行の高さや、各列の幅をセルの値に応じて自動的に調節する機能が新しく追加されている。このプログラムでは「AutoSizeRowsModeプロパティ」を設定することにより2列目の画像全体が表示されるようにしているが、このサイズ自動調節機能についても回をあらためて解説する予定だ。
今回はDGVコントロールの基本構造について解説し、最後に簡単なサンプル・プログラムを作成して実際にグリッドにデータを表示してみた。
DataGridコントロールを使ったことのある方なら、データを表示するのにデータ・バインド(データ連結)機能が使われていないことに気付かれただろう。DGVコントロールでは、従来のデータ・バインドによるデータの表示に加えて、「非バインド・モード」(今回のサンプル・プログラムはこれ)や、大量のデータを扱うときに利用できる「仮想モード」などが用意されている。次回はこの辺りの解説から始める予定だ。
Copyright© Digital Advantage Corp. All Rights Reserved.