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
       
  
  
  
  
コメント