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 に関するサンプル 


5.DataGridView での列に関する操作関係色々(18_DGV_05) (旧、SampleNo.309)
1 .DataGridView の指定の列目までをスクロールされないように設定
2 .DataGridView の指定列を非表示に設定
3 .指定列のセルに含まれるテキスト形式の内容を複数行で表示
4 .指定列の表示スタイルを設定
5 .指定列を左端先頭に表示する
6 .セルの内容に合わせて全ての列の幅を自動調整
7 .指定位置に列を挿入する / 指定の列を削除する
8 .指定の列に画像(イメージ、アイコン)を表示する
9 .ユーザーが列のサイズを変更できないように設定
10.DataGridView の列のデータに合せてIMEのモードを設定する
11.ユーザーがマウスのドラッグで列の順序を変更できるように設定
12.DataGridView の指定の列を選択状態にする
13.DataGridView の指定の列を編集不可(読み取り専用)に設定
14.DataGridView の指定の列のみに罫線を描画する
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.DataGridView の指定の列目までをスクロールされないように設定

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
'01.DataGridView の指定の列目までをスクロールされないように設定
    If DataGridView1.Rows.Count = 0 Then
        Button1.PerformClick()
    End If
    '全ての列幅を指定の幅に設定
    For Each com As DataGridViewColumn In DataGridView1.Columns
        com.Width = 300
    Next
    '指定の列幅を指定の幅に設定
    DataGridView1.Columns(0).Width = 50
    Me.Width = 1000


    '指定の列目までをスクロールされないように設定
    DataGridView1.Columns(1).Frozen = True

    'これで元に戻りそうに思うのだが、実際には元に戻らない
    DataGridView1.Columns(1).Frozen = False

    'こちらでないと元に戻らない
    'DataGridView1.Columns(0).Frozen = False
End Sub

このページのトップへ移動します。 2.DataGridView の指定列を非表示に設定

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
'02.DataGridView の指定列を非表示に設定
    If DataGridView1.Rows.Count = 0 Then
        Button1.PerformClick()
    End If

    '指定列(Columns(0))を非表示に設定
    DataGridView1.Columns(0).Visible = False

    wt.WaitTime(2000)

    '指定列(Columns(0))を表示に設定
    DataGridView1.Columns(0).Visible = True

End Sub

このページのトップへ移動します。 3.指定列のセルに含まれるテキスト形式の内容を複数行で表示

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
'03.指定列のセルに含まれるテキスト形式の内容を複数行で表示
    If DataGridView1.Rows.Count = 0 Then
        Button1.PerformClick()
    End If
    'WrapMode が True の場合は、改行文字が改行として表示され、セル幅を超える行はすべて折り返して表示される。
    DataGridView1.Columns(1).DefaultCellStyle.WrapMode = DataGridViewTriState.True
    DataGridView1.Rows(3).Cells(1).Value = "4行目の" & vbCrLf & "2列目に" & vbCrLf & "書き込み"
    DataGridView1.Rows(3).Height = 50

    wt.WaitTime(2000)

    'プロパティは設定されていなくて、既定の方法で動作します。(DataGridViewTriState.False でも動作は同じ)
    DataGridView1.Columns(1).DefaultCellStyle.WrapMode = DataGridViewTriState.NotSet
End Sub

このページのトップへ移動します。 4.指定列の表示スタイルを設定
セルに書式設定をして表示 と同じ事です。

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
'04.指定列の表示スタイルを設定
    If DataGridView1.Rows.Count = 0 Then
        Button1.PerformClick()
    End If
    DataGridView1.Rows(3).Height = 50

    '指定列の表示スタイルを設定(フォント・配置・セルのFormat)
    Dim cstyle As New DataGridViewCellStyle
    cstyle.Alignment = DataGridViewContentAlignment.MiddleRight
    cstyle.Font = New Font("MS ゴシック", 12, FontStyle.Bold)
    cstyle.Format = "N1"  '下1桁で0揃え
    DataGridView1.Columns(5).DefaultCellStyle = cstyle

    '指定列の表示スタイルを日付の書式に設定
    '日付データが設定されている列で試してください。
    DataGridView1.Columns(1).DefaultCellStyle.Format = "yyyy年MM月dd"

    '縦方向上揃え、水平方向右揃えに設定
    DataGridView1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
    DataGridView1.Columns(3).DefaultCellStyle.Format = "#,##0.0"
    DataGridView1.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight

End Sub
 
このページのトップへ移動します。 5.指定列を左端先頭に表示する

Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
'05.指定列を左端先頭に表示する
    If DataGridView1.Rows.Count = 0 Then
        Button1.PerformClick()
    End If
    '全ての列幅を指定の幅に設定
    For Each com As DataGridViewColumn In DataGridView1.Columns
        com.Width = 200
    Next

    '指定列を左端に表示する(3列目を左端先頭に表示)
    DataGridView1.FirstDisplayedScrollingColumnIndex = 2

End Sub

このページのトップへ移動します。 6.セルの内容に合わせて全ての列の幅を自動調整

Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
'06.セルの内容に合わせて全ての列の幅を自動調整
    Button1.PerformClick()
    wt.WaitTime(1000)

    'すべての列の幅をヘッダーセルを除くすべてのセルの内容(文字列幅)に合わせて調整
    DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader)
    wt.WaitTime(2000)

    'すべての列の幅をヘッダーセルを含むすべてのセルの内容(文字列幅)に合わせて調整
    DataGridView1.AutoResizeColumns()

End Sub

このページのトップへ移動します。 7.指定位置に列を挿入する / 指定の列を削除する

Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
'07.指定位置に列を挿入する / 指定の列を削除する
    If DataGridView1.Rows.Count = 0 Then
        Button1.PerformClick()
    End If
    wt.WaitTime(2000)

    '列の挿入(単純な列の追加)
    Dim newColumn As New DataGridViewTextBoxColumn
    DataGridView1.Columns.Insert(2, newColumn)
    wt.WaitTime(2000)

    'Image 列を新規作成追加する場合
    Dim imageColumn As New DataGridViewImageColumn()
    With imageColumn
        .Image = Nothing   ' Bitmap.FromFile("..\..\FACE03.ICO")
        .Name = "評価"
        .HeaderText = "評価"
        'セルに四角に赤いXの画像が表示されないようにする
        .DefaultCellStyle.NullValue = Nothing
    .Width = 55
    End With
    DataGridView1.Columns.Insert(0, imageColumn)

    wt.WaitTime(2000)

    '列の削除
    '行に関する操作関係の、クリックした行を確認の上削除の項も参考に
    DataGridView1.Columns.RemoveAt(3)
    DataGridView1.Columns.RemoveAt(0)

End Sub

このページのトップへ移動します。 8.指定の列に画像(イメージ、アイコン)を表示する

Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
'08.指定の列に画像(イメージ、アイコン)を表示する
    If DataGridView1.Rows.Count = 0 Then
        Button1.PerformClick()
    End If

    'Image 列を新規作成追加
    Dim imageColumn As New DataGridViewImageColumn()
    With imageColumn
        .Image = Nothing   ' Bitmap.FromFile("..\..\FACE03.ICO")
        .Name = "評価"
        .HeaderText = "評価"
        'セルに四角に赤いXの画像が表示されないようにする
        .DefaultCellStyle.NullValue = Nothing
        .Width = 55
    End With
    DataGridView1.Columns.Insert(0, imageColumn)

    For i As Integer = 0 To DataGridView1.Rows.Count - 2
        Dim se As Integer = CInt(DataGridView1.Item(6, i).Value)
        Select Case se  '成績により画像を選択(指定の列のイメージを変更する)
            Case Is > 260
            DataGridView1("評価", i).Value = New Bitmap("..\..\..\data_pic\FACE03.ICO")
            Case Is > 220
            DataGridView1("評価", i).Value = New Bitmap("..\..\..\data_pic\FACE02.ICO")
            Case Is > 180
            DataGridView1("評価", i).Value = New Bitmap("..\..\..\data_pic\FACE01.ICO")
            Case Else
            DataGridView1("評価", i).Value = New Bitmap("..\..\..\data_pic\FACE04.ICO")
        End Select
    Next i
End Sub

このページのトップへ移動します。 9.ユーザーが列のサイズを変更できないように設定

Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
'09.ユーザーが列のサイズを変更できないように設定
    If DataGridView1.Rows.Count = 0 Then
        Button1.PerformClick()
    End If

    If DataGridView1.AllowUserToResizeColumns = True Then
        'ユーザーが列のサイズを変更できないように設定
        DataGridView1.AllowUserToResizeColumns = False
    Else
        'ユーザーが列のサイズを変更できるように設定(規定値)
        DataGridView1.AllowUserToResizeColumns = True
    End If
End Sub

このページのトップへ移動します。 10.DataGridView の列のデータに合せてIMEのモードを設定する
別途、入力されるデータのエラーチェックは設定しておいて下さい。

Private frg10 As Boolean

Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
'10.DataGridView の列のデータに合せてIMEのモードを設定する
    frg10 = Not frg10
    Button1.PerformClick()
    DataGridView1.Focus()
End Sub

Private
Sub DataGridView1_CellEnter(sender As Object, e As DataGridViewCellEventArgs) _
                                                                    Handles DataGridView1.CellEnter
If frg10 Then
    With DataGridView1
        Dim ColName As String = .Columns.Item(e.ColumnIndex).HeaderText
        Select Case ColName
            Case "No", "国語", "数学", "英語", "合計点"
                .ImeMode = ImeMode.Alpha
            Case "氏名"
                .ImeMode = ImeMode.Hiragana
            Case Else
                .ImeMode = ImeMode.Off
        End Select
    End With
End If

End Sub

このページのトップへ移動します。 11.ユーザーがマウスのドラッグで列の順序を変更できるように設定

Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
'11.ユーザーがマウスのドラッグで列の順序を変更できるように設定
    If DataGridView1.Rows.Count = 0 Then
        Button1.PerformClick()
    End If

    If DataGridView1.AllowUserToOrderColumns = False Then
        '列の順番の入れ替えを有効にする(マウスのドラッグ操作で)
        DataGridView1.AllowUserToOrderColumns = True
    Else
        '列の順番の入れ替えを無効にする(規定値)
        DataGridView1.AllowUserToOrderColumns = False
    End If
End Sub

このページのトップへ移動します。 12.DataGridView の指定の列を選択状態にする

Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
'12.DataGridView の指定の列を選択状態にする
    If DataGridView1.Rows.Count = 0 Then
        Button1.PerformClick()
    End If

    'SortMode が Automatic の場合列単位での選択ができないので
    For i = 0 To DataGridView1.Columns.Count - 1
        DataGridView1.Columns(i).SortMode = DataGridViewColumnSortMode.Programmatic
    Next i

    '列のヘッダーまたは列内のセルをクリックすることによって列全体が選択されるように変更
    DataGridView1.SelectionMode = DataGridViewSelectionMode.FullColumnSelect

    '2列目を全て選択状態にする
    DataGridView1.Columns(1).Selected = True

    '選択されている列数を取得
    Debug.WriteLine(DataGridView1.SelectedColumns.Count)

    '選択されているセル数を取得
    Debug.WriteLine(DataGridView1.SelectedCells.Count)
    '選択されている行数を取得
    Debug.WriteLine(DataGridView1.SelectedRows.Count)

End Sub

このページのトップへ移動します。 13.DataGridView の指定の列を編集不可(読み取り専用)に設定

Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click
'13.DataGridView の指定の列を編集不可(読み取り専用)に設定
    If DataGridView1.Rows.Count = 0 Then
        Button1.PerformClick()
    End If

    ''2列目(氏名の列)を編集不可に設定
    'DataGridView1.Columns(1).ReadOnly = True
    ''上記編集不可の設定を元に戻す
    'DataGridView1.Columns(1).ReadOnly = False

    DataGridView1.Columns(1).ReadOnly = Not DataGridView1.Columns(1).ReadOnly
End Sub

このページのトップへ移動します。 14.DataGridView の指定の列のみに罫線を描画する

Private frg14 As Boolean

Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click
'14.DataGridView の指定の列のみに罫線を描画する
    frg14 = Not frg14
    Button1.PerformClick()

End Sub

Private Sub DataGridView1_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) _
                                                                                Handles DataGridView1.CellPainting

    '指定列以外及びヘッダー部分は除く
    If frg14 = True And e.ColumnIndex = 4 And e.RowIndex >= 0 Then
        '描画する範囲を設定
        Dim newRect As New Rectangle(e.CellBounds.X, e.CellBounds.Y, e.CellBounds.Width, e.CellBounds.Height)
        'セルの内部を塗りつぶしす
        e.Graphics.FillRectangle(New SolidBrush(e.CellStyle.BackColor), e.CellBounds)
        'セルを描画する(線の太さを2ピクセルで)
        e.Graphics.DrawRectangle(New Pen(New SolidBrush(Color.Cyan), 2), newRect)
        If (e.Value IsNot Nothing) Then
            'セル内のデータを描画する
            TextRenderer.DrawText(e.Graphics, CStr(e.Value), e.CellStyle.Font, e.CellBounds, e.CellStyle.ForeColor, _
                                    TextFormatFlags.Right Or TextFormatFlags.VerticalCenter)
        End If
        '処理の完了を通知
        e.Handled = True
    End If

'DataGridView コントロールのセルの外観をカスタマイズする
'http://msdn.microsoft.com/ja-jp/library/hta8z9sz.aspx

End Sub

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


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


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



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


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
1列目を右揃えに設定 配置位置の設定・縦方向中央揃え・水平方向右揃えに設定 列の順番の入れ替えを有効にする(ユーザーによるマウスのドラッグ操作で) 列に画像を表示する(セルの値により表示する画像を変更する) すべての列幅を文字のサイズに合せる 列のサイズ変更を不可に設定 指定行を折り返して複数行表示する 指定列(Columns(0))を非表示に設定する 指定のヘッダーのバックカラー及びフォアカラーを設定する 1列目の列幅を文字は幅に合せる等の列幅の設定方法 AutoResizeColumn(0) 指定の列までをスクロールされないようにする 指定位置に新規に列を挿入する 指定列を画面の最左側に表示する(指定列までは非表示のような事)  指定列のフォントを設定  指定列を日付の書式設定で表示  指定列を3桁区切りスタイルで表示  指定列を縦方向上揃え、水平方向右揃えで表示  下1桁で0揃え(小数点を表示する場合)  全ての列幅を文字列のサイズに合せる  全ての列幅を指定のサイズ設定  イメージ列を作成しアイコンを表示する  セルにエラー画像?(四角に赤い×の画像)が表示されないようにする  セルの値により表示する画像を選択する  指定の列が TextBox タイプかを調べる  2列目の IME モードをひらがなに設定する   IME モード をOff に設定する   セルの内容に合わせて、指定された列の幅を自動調整  指定の列の幅を設定する  全ての列に対して個別に設定する   SortMode の Automatic を Programmatic に変更する 列のヘッダーまたは列内のセルをクリックすることによって列全体が選択されるようにする  指定の列を全て選択状態にする  択されている列数を取得


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