DataGridViewとは?
DataGridViewコントロールはさまざまな種類のデータ ソースのデータを表形式で表示したり編集したりできる
又、データ ソースをバインドせずに動作させることもできる
拡張性に優れていてカスタマイズに柔軟なコントロールである
DataGridViewはエンドユーザーが形状等を操作できる
エンドユーザーがDataGridViewを装備したプログラムを実行した場合、表の幅や高さ、並び替え等の形状等の変更が可能である
時には便利だがプログラムの仕様上、そのような動作を制限しる必要が出てくる
ここでは、エンドユーザーによる操作の制限といくつかの機能、カスタマイズの一部を紹介します
ヘッダーの幅・高さの変更禁止する
Me.DataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing Me.DataGridView.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing
セルの幅や高さを変更を禁止する
Me.DataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing Me.DataGridView.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing
並び替え(ソート)を禁止する
For Each c As DataGridViewColumn In Me.DataGridView.Columns c.SortMode = DataGridViewColumnSortMode.NotSortable Next c
複数行の選択を禁止する
Me.DataGridView.MultiSelect = False
列ヘッダーの文字列設定
Me.DataGridView.Columns(0).HeaderText = "コード" Me.DataGridView.Columns(1).HeaderText = "名称"
列ヘッダーのスタイル設定
Me.DataGridView.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter Me.DataGridView.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
行ヘッダー幅設定
Me.DataGridView.RowHeadersWidth = 20
列幅設定
Me.DataGridView.Columns(0).Width = 40 Me.DataGridView.Columns(1).Width = 140
セルの書式設定
Me.DataGridView.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight Me.DataGridView.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
データソースの列名割り付け
Me.DataGridView.Columns(0).DataPropertyName = "CODE" Me.DataGridView.Columns(1).DataPropertyName = "NAME"
DataGridViewにテーブルを表示
Dim ad As New SqlClient.SqlDataAdapter Dim ds As New DataSet Dim sql As String sql = "" sql &= "SELECT" Sql &= " 列名1," sql &= " 列名2" sql &= " FROM" sql &= " テーブル名" ad = New SqlClient.SqlDataAdapter(sql, cnSring) ad.Fill(ds) Me.DataGridView.DataSource = ds.Tables(0) ds.Dispose() ad.Dispose()
DataGridViewでEnterキー
DataGridViewでEnterキーを押したらTabキーと同様の動作、次のフィールドにフォーカスを移す方法です
クラスを作成して、ビルド、又はリイルドしたらルールボックスにカスタムDataGridViewとして現れ、通常のDataGridViewのように使用できます
Public Class MyDataGridView Inherits DataGridView Protected Overrides Function ProcessDialogKey(ByVal keyData As Keys) As Boolean If (keyData And Keys.KeyCode) = Keys.Enter Then Return Me.ProcessTabKey(keyData) Else Return MyBase.ProcessDialogKey(keyData) End If End Function Protected Overrides Function ProcessDataGridViewKey(ByVal e As KeyEventArgs) As Boolean If e.KeyCode = Keys.Enter Then Return Me.ProcessTabKey(e.KeyCode) Else Return MyBase.ProcessDataGridViewKey(e) End If End Function End Classツールボックスに「MyDataGridView」コントロールが表示される