VB.NETで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"

テーブルの内容を表示する

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

VB.NETのお勉強の教材

VB.NET教材プログラミング初心者から中級者まで実戦に役立つ内容を分かりやすく解説しています。

コメントを残す