mamori017.log

歴史的クソブログ

DataGridViewにチェックボックスを追加する

DataGridView上にデータベースから取得したデータとチェックボックスを表示させたい場合、 バインドするDataTableにチェックボックス列を追加することで表示できる。

Dim objDataTable As DataTable
Dim objCol As DataColumn

' チェックボックス列を作成
objColumn = New DataColumn("Checkbox",GetType(Boolean))

' DataTableにチェックボックス列を追加
objDataTable.Columns.Add(objColumn)

'データソースにDataTableをセット
objDataGridView.DataSource = objDataTable

' DataGridView再描画
objDataGridView.Refresh()

DataTableにチェックボックスのDataColumnを追加しただけだと、 DataTable上に存在するデータ列に追加されるかたちで配置される。

DataTableのイメージ
ColumnA ColumnB Checkbox
100 2017
101 2016

チェックボックス列の表示位置を変更したい場合はDataColumn.SetOrdinalを使用する。

' 引数は左端から0
objColumn.SetOrdinal(0)
SetOrdinalで列を変更した場合のDataTableのイメージ
Checkbox ColumnA ColumnB
100 2017
101 2016

セルを読み取り専用にする場合はDataGridViewのReadOnlyプロパティをTrueに変更する。 ただし、DataGridViewのReadOnlyプロパティを変更すると、DataGridView上のセルすべてに適用されるため、 チェックボックスの変更のみを有効にしたい場合は、 DataGridViewをRefreshする前に個別にプロパティを変更する。

' 左端列がチェックボックスの場合
For i As Integer = 1 To objDataGridView.ColumnCount - 1
    objDataGridView.Columns(i).ReadOnly = True
Next