VB.NET|DataGridViewを使ってみる

VB.NET|DataGridViewを使ってみる

VB.NET

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

コメント

タイトルとURLをコピーしました