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"
テーブルの内容を表示する
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キーでTabキーと同じ動作をする
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
コメント