VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

メニューへ戻ります。 DataGridView 関係のメニュー
1.DataGridView でのデータの読込・保存・表示関係
2.DataGridView でのヘッダー関係の設定色々
3.DataGridView でのセルに関する操作関係色々 
4.DataGridView での行に関する操作関係色々 
5.DataGridView での列に関する操作関係色々 
6.DataGridView でのソート等のデータ操作関係色々
7.DataGridView で上記以外の設定色々
8. 
9. 
10. 
11.
12.
 . 
20.その他、当サイト内に掲載のDataGridView に関するサンプル 


2.DataGridView でのヘッダー関係の設定色々(18_DGV_02) (旧、SampleNo.309)
1 .列のヘッダーセルのキャプションテキストを取得・設定
2 .列ヘッダーの表示スタイル設定色々
3 .行ヘッダー及び列ヘッダーを非表示に設定
4 .行ヘッダーに行番号を描画する
5 .行のヘッダーセルのキャプションテキストを取得・設定
6 .行ヘッダーの表示スタイル設定色々
7 .行及び列ヘッダーのカラー設定
8 .左端上端のヘッダーに対する設定
9 .行ヘッダーのカレントセルを表す三角マークを非表示に設定
10.列ヘッダーのソートの三角マークを非表示に設定
11.クリックした個所のセル情報取得時のヘッダーセルクリック時のエラー回避
12.
13.
14.
15.
16.
17.
18.

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86
Option :[Compare Text] [Explicit On] [Infer On] [Strict On]
Imports :追加なし
参照設定:
WaitTime.dll   参照設定方法参照
その他 :使用データは、次よりダウンロードして使って下さい。 dgvdat.zip
    :このサンプルを使用される前に、左のメニューのDataGridViewでのデータの読込保存関係をご覧になって下さい。
このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので)
必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい)
このページのトップへ移動します。 1.列のヘッダーセルのキャプションテキストを取得・設定
すでに、CSV ファイルを ADO.NET を使って DataGridView に読み込み表示されているものとします。

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
'01.列のヘッダーセルのキャプションテキストを取得・設定
    Button1.PerformClick()

    For i As Integer = 0 To DataGridView1.Columns.Count - 1
        '各列のキャプションテキストを取得
        Debug.WriteLine(DataGridView1.Columns.Item(i).HeaderText)
    Next i

    '2列目のキャプションテキストを書き換え
    DataGridView1.Columns.Item(1).HeaderText = "あいうえお"

    'キャプションテキストを2段書きで表示
    DataGridView1.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.True
    DataGridView1.Columns.Item(2).HeaderText = "かきくけこ" & Constants.vbCrLf & "さしすせそ"
End Sub

このページのトップへ移動します。 2.列ヘッダーの表示スタイル設定色々

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
'02.列ヘッダーの表示スタイル設定色々
    Button1.PerformClick()

    '列ヘッダーの項目名を中央揃え・他に設定
    DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = _
               DataGridViewContentAlignment.MiddleCenter
    wt.WaitTime(1000)

    '列ヘッダーのスタイル(フォント・配置)を設定
    Dim columnHeaderStyle As DataGridViewCellStyle = DataGridView1.ColumnHeadersDefaultCellStyle
    '※ Dim columnHeaderStyle As New DataGridViewCellStyle にすると現在の設定値が初期化されてしまう 

    '水平方向と垂直方向を中央に配置
    columnHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
    wt.WaitTime(1000)

    'フォントスタイルを設定
    columnHeaderStyle.Font = New Font("MS 明朝", 12, FontStyle.Bold)
    '  columnHeaderStyle.WrapMode = DataGridViewTriState.True
    DataGridView1.ColumnHeadersDefaultCellStyle = columnHeaderStyle
    wt.WaitTime(1000)

    'ヘッダーの高さを設定
    '列ヘッダーの高さの設定をユーザーが出来るように設定(でないと高さの設定ができない)
    DataGridView1.ColumnHeadersHeightSizeMode = _
                DataGridViewColumnHeadersHeightSizeMode.DisableResizing
    '列ヘッダーの高さを40ピクセル設定(既定値は 23 ピクセルです)
    DataGridView1.ColumnHeadersHeight = 40
End Sub

このページのトップへ移動します。 3.行ヘッダー及び列ヘッダーを非表示に設定

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
'03.行ヘッダー及び列ヘッダーを非表示に設定
    Button1.PerformClick()
    '行ヘッダーを非表示に設定
    'DataGridView1.RowHeadersVisible = False
    DataGridView1.RowHeadersVisible = (Not DataGridView1.RowHeadersVisible)
    wt.WaitTime(1000)

    '列ヘッダーを非表示に設定
    'DataGridView1.ColumnHeadersVisible = False
    DataGridView1.ColumnHeadersVisible = Not DataGridView1.ColumnHeadersVisible
End Sub

このページのトップへ移動します。 4.行ヘッダーに行番号を描画する

Private frg06 As Boolean

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
'04.行ヘッダーに行番号を描画する
    '行ヘッダーに行番号を描画する
    frg06 = Not frg06
    Button1.PerformClick()
End Sub

Private Sub DataGridView1_RowPostPaint(sender As Object, e As DataGridViewRowPostPaintEventArgs) Handles DataGridView1.RowPostPaint
'行ヘッダーに行番号を描画する
    If frg06 Then
        '描画位置の設定
        Dim flgStyle As TextFormatFlags = TextFormatFlags.VerticalCenter Or TextFormatFlags.Right
        '描画範囲
        Dim rect As New Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, _
        DataGridView1.RowHeadersWidth - 4, e.RowBounds.Height)
        '行番号の生成及び描画
        TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), e.InheritedRowStyle.Font, _
                    rect, e.InheritedRowStyle.ForeColor, flgStyle)
    End If
End Sub

このページのトップへ移動します。 5.行のヘッダーセルのキャプションテキストを取得・設定

Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
'05.行のヘッダーセルのキャプションテキストを取得・設定
    Button1.PerformClick()
    DataGridView1.Rows(5).HeaderCell.Value = "6行目"
    Debug.WriteLine(DataGridView1.Rows(5).HeaderCell.Value)   '結果 6行目
End Sub

このページのトップへ移動します。 6.行ヘッダーの表示スタイル設定色々

Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
'06.行ヘッダーの表示スタイル設定色々
    Button7.PerformClick()
    DataGridView1.Rows(5).HeaderCell.Value = "6行目行ヘッダーに書き込み"

    '行ヘッダーの幅を150 ピクセルに設定
    DataGridView1.RowHeadersWidth = 150
    wt.WaitTime(1000)

    '各セルに適用される書式指定情報およびスタイル情報を表す
    Dim rowHeaderStyle As DataGridViewCellStyle = DataGridView1.RowHeadersDefaultCellStyle
    '※ Dim columnHeaderStyle As New DataGridViewCellStyle にすると現在の設定値が初期化されてしまう 

    '水平方向は左端に垂直方向を中央に配置
    rowHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
    wt.WaitTime(1000)

    'フォントスタイルを設定
    rowHeaderStyle.Font = New Font("MS 明朝", 12, FontStyle.Bold)

    'キャプションテキストを2段書き(複数行)で表示
    Debug.Print(rowHeaderStyle.WrapMode.ToString) 'Default = True のようなので
    rowHeaderStyle.WrapMode = DataGridViewTriState.False
    DataGridView1.RowHeadersDefaultCellStyle = rowHeaderStyle
    wt.WaitTime(1000)

    '6行目のヘッダーセルの高さを設定
    DataGridView1.Rows(5).Height = 40

'上記の以外は、列ヘッダーの表示スタイル設定色々も参考にしてください
End Sub

このページのトップへ移動します。 7.行及び列ヘッダーのカラー設定

Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
'07.行及び列ヘッダーのカラー設定
    Button1.PerformClick()

    '※ visual スタイルを False に設定しておかないとカラー設定が有効にならない。
    'ヘッダーの visual スタイルを有効か無効に設定(既定値は有効で true )
    DataGridView1.EnableHeadersVisualStyles = False
    DataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = Color.Red
    DataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.Cyan
    DataGridView1.Columns(3).HeaderCell.Style.ForeColor = Color.Yellow
    DataGridView1.Columns(3).HeaderCell.Style.BackColor = Color.Red

    DataGridView1.RowHeadersDefaultCellStyle.BackColor = Color.LimeGreen
    DataGridView1.RowHeadersDefaultCellStyle.ForeColor = Color.Red
    DataGridView1.Rows(10).HeaderCell.Value = "11行目"
    DataGridView1.Rows(10).HeaderCell.Style.BackColor = Color.Red
    DataGridView1.Rows(10).HeaderCell.Style.ForeColor = Color.Yellow
End Sub

このページのトップへ移動します。 8.左端上端のヘッダーに対する設定

Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
'08.左端上端のヘッダーに対する設定
    Button1.PerformClick()

    '左上端のセルに記入
    'ヘッダーの高さが変更されるので、現在のヘッダーの高さを取得
    Dim hh As Integer = DataGridView1.ColumnHeadersHeight
    DataGridView1.TopLeftHeaderCell.Value = "連番"

    'ヘッダーの高さの設定をユーザーが出来るように設定(でないと高さの設定ができない)
    DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
    DataGridView1.ColumnHeadersHeight = hh

    '左上端のセルのバックカラーを変更
    'ヘッダーの visual スタイルが有効になっている場合は true。
    'True の場合は、下記 BackColor の設定が有効にならない。(既定値は、true)
    DataGridView1.EnableHeadersVisualStyles = False
    DataGridView1.TopLeftHeaderCell.Style.BackColor = Color.Green
    DataGridView1.TopLeftHeaderCell.Style.ForeColor = Color.Yellow
End Sub

このページのトップへ移動します。 9.行ヘッダーのカレントセルを表す三角マークを非表示に設定

Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
'09.行ヘッダーのカレントセルを表す三角マークを非表示に設定
  '下記1行は初期表示前に設定してください。
    DataGridView1.RowTemplate.HeaderCell = New dgvRowHeaderCell
    Button1.PerformClick()

    '元に戻す場合
    'DataGridView1.RowTemplate.HeaderCell = New DataGridViewRowHeaderCell
End Sub

'行ヘッダーのカレントセルを表す三角マークを非表示に設定する為のクラス。
Public Class dgvRowHeaderCell
    'DataGridViewRowHeaderCell を継承
    Inherits DataGridViewRowHeaderCell
    'DataGridViewHeaderCell.Paint をオーバーライドして行ヘッダーを描画
    Protected Overrides Sub Paint(ByVal graphics As Graphics, ByVal clipBounds As Rectangle, _
        ByVal cellBounds As Rectangle, ByVal rowIndex As Integer, ByVal cellState As DataGridViewElementStates, _
        ByVal value As Object, ByVal formattedValue As Object, ByVal errorText As String, _
        ByVal cellStyle As DataGridViewCellStyle, ByVal advancedBorderStyle As DataGridViewAdvancedBorderStyle, _
        ByVal paintParts As DataGridViewPaintParts)
        '標準セルの描画からセル内容の背景だけ除いた物を描画(-5)
        MyBase.Paint(graphics, clipBounds, cellBounds, rowIndex, cellState, value, _
            formattedValue, errorText, cellStyle, advancedBorderStyle, _
            Not DataGridViewPaintParts.ContentBackground)
    End Sub
End Class

このページのトップへ移動します。 10.列ヘッダーのソートの三角マークを非表示に設定

Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
'10.列ヘッダーのソートの三角マークを非表示に設定
    Button1.PerformClick()

    ' DataGridViewRow を作成して初期化(行ヘッダーの三角を非表示に設定)
    '通常は、下記の3行だけを初期表示後に設定してください。
    'ソートの三角マークを非表示にする為に、DataGridViewHeaderCell を描画
    For i As Integer = 0 To DataGridView1.ColumnCount - 1
        DataGridView1.Columns(i).HeaderCell = New dgvColumnHeaderCell()
    Next i

    'Defaultの状態に戻す(▼を表示)
    'For i As Integer = 0 To DataGridView1.ColumnCount - 1
    '   DataGridView1.Columns(i).HeaderCell = Nothing
    'Next i
End Sub

'列ヘッダーにカレントセルを表す三角が表示されるのを非表示にする為のクラス。

Public Class dgvColumnHeaderCell
    Inherits DataGridViewColumnHeaderCell
    'DataGridViewHeaderCell.Paint をオーバーライドして列ヘッダーを描画
    Protected Overrides Sub Paint(ByVal graphics As Graphics, ByVal clipBounds As Rectangle, _
        ByVal cellBounds As Rectangle, ByVal rowIndex As Integer, ByVal cellState As DataGridViewElementStates, _
        ByVal value As Object, ByVal formattedValue As Object, ByVal errorText As String, _
        ByVal cellStyle As DataGridViewCellStyle, ByVal advancedBorderStyle As DataGridViewAdvancedBorderStyle, _
        ByVal paintParts As DataGridViewPaintParts)

        '標準セルの描画からセル内容の背景だけ除いた物を描画(-5)
        MyBase.Paint(graphics, clipBounds, cellBounds, rowIndex, cellState, value, _
            formattedValue, errorText, cellStyle, advancedBorderStyle, _
                Not DataGridViewPaintParts.ContentBackground)
    End Sub
End Class

このページのトップへ移動します。 11.クリックした個所のセル情報取得時のヘッダーセルクリック時のエラー回避

Private frg13 As Boolean

Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
'11.クリックした個所のセル情報取得時のヘッダーセルクリック時のエラー回避
    Button1.PerformClick()
    frg13 = Not frg13
End Sub

Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
If frg13 Then
    'ヘッダーセルをクリックした場合は、無視する事によってエラーを回避し、ソートを可能にする
    If e.RowIndex < 0 Or e.ColumnIndex < 0 Then Exit Sub

    MessageBox.Show(DataGridView1.Item(e.ColumnIndex, e.RowIndex).Value.ToString)

    '又は、MouseClick イベントでの場合は、
    'Dim pos As DataGridView.HitTestInfo = DataGridView1.HitTest(e.X, e.Y)
    'If pos.Type = DataGrid.HitTestType.Cell Then
    'のようにして、セルのタイプを調べる事ができる
Else

    Try
        MessageBox.Show(DataGridView1.Item(e.ColumnIndex, e.RowIndex).Value.ToString)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End If
End Sub

このページのトップへ移動します。 12.

このページのトップへ移動します。 13.

このページのトップへ移動します。 14.

このページのトップへ移動します。 15.

このページのトップへ移動します。 16.

このページのトップへ移動します。 17. 

このページのトップへ移動します。 18.

このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
データグリッドビュー 




このページのトップへ移動します。