1.DataGridView の列のヘッダーセルのキャプションテキスト(項目名)を取得・設定 (1)各列のキャプションテキストを取得 (2).2列目のキャプションテキストを書き換え (3)ワードラップモードの設定 (4)キャプションテキストを2段書き(複数行)で表示 2.DataGridView の列ヘッダーの表示スタイル設定色々 (1)列ヘッダーの項目名を中央揃え・他に設定 (2)水平方向と垂直方向を中央に配置 (3)フォントスタイルを設定 (4)列ヘッダーの高さの設定をユーザーが変更出来るように設定 (5)列ヘッダーの高さを40ピクセルに設定 3.DataGridView の行ヘッダー及び列ヘッダーを非表示に設定 (1)行ヘッダーを非表示に設定 (2)列ヘッダーを非表示に設定 4.DataGridView の行ヘッダーに行番号を描画する 5.DataGridView の行のヘッダーセルのキャプションテキスト(項目名)を取得・設定 (1)6行目のヘッダーセルに書き込み (2)6行目のヘッダーセルの内容を取得 6.DataGridView の行ヘッダーの表示スタイル設定色々 (1)行ヘッダーの幅を設定 (2)水平方向は左端に垂直方向を中央に配置 (3)フォントスタイルを設定 (4)キャプションテキストを2段書き(複数行)で表示 (5)6行目のヘッダーセルの高さを設定 7.行ヘッダー及び列ヘッダーのカラー設定色々 (1)ヘッダーの visual スタイルを有効か無効に設定 (2)全ての列ヘッダーの(ForeColor)前景色を設定 (3)全ての列ヘッダーの(BackColor)背景色を設定 (4)4列目のヘッダーの(ForeColor)前景色を設定 (5)4列目の列ヘッダーの(BackColor)背景色を設定 (6)全ての行ヘッダーの(BackColor)背景色を設定 (7)全ての行ヘッダーの(ForeColor)前景色を設定 (8)全ての列ヘッダーの(BackColor)背景色を設定 (9)11行目の列ヘッダーの(BackColor)背景色を設定 (10)11行目のヘッダーの(ForeColor)前景色を設定 8.DataGridView の左端上端のヘッダー(TopLeftHeader)に対する設定色々 (1)現在のヘッダーの高さを取得 (2)ヘッダーセルにタイトルを書き込み (3)列ヘッダーの高さを調整する方法を指定 (4)ヘッダーの高さを設定 (5)ヘッダーの visual スタイルを無効に設定 (6)ヘッダーの(BackColor)背景色を設定 (7)ヘッダーの(ForeColor)前景色を設定 9.DataGridView の左上端のヘッダーをクリックした時全て選択になるのを回避 10.行ヘッダーのカレントセルを表す三角マークを非表示に設定する 11.DataGridView の列ヘッダーのソートマークの三角を非表示に設定する 12.DataGridView の列ヘッダーセルをクリックした場合のエラーを回避する 13. |
||||
開発環境 | WindowsVista VB2010(VS2010 Pro) Framework 4 / ターゲットCPU:X86 [Option Compare Text] [Option Explicit On] [Option Infer On] [Option Strict On]で設定 |
|||
その他条件 | 使用データ(dgvdat1.csv)は、次よりダウンロードして使って下さい。 dgvdat309.zip データファイルは、プログラムの起動フォルダーに入れておいてください。 DataGridViewに表示(その1) で、データを表示した状態で実施してください。 下記サンプルコードと同等のイベントで実施してください。 |
|||
1.DataGridView の列のヘッダーセルのキャプションテキスト(項目名)を取得・設定 Private Sub Button11_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button11.Click '列のヘッダーセルのキャプションテキストを取得・設定 For i As Integer = 0 To DataGridView1.Columns.Count - 1 '(1)各列のキャプションテキストを取得 Debug.WriteLine(DataGridView1.Columns.Item(i).HeaderText) Next i '(2)2列目のキャプションテキストを書き換え DataGridView1.Columns.Item(1).HeaderText = "あいうえお" '(3)(4)キャプションテキストを2段書き(複数行)で表示 DataGridView1.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.True DataGridView1.Columns.Item(2).HeaderText = "かきくけこ" & Constants.vbCrLf & "さしすせそ" End Sub |
||||
2.DataGridView の列ヘッダーの表示スタイル設定色々 Private Sub Button12_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button12.Click '(1)列ヘッダーの項目名を中央揃え・他に設定 DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = _ DataGridViewContentAlignment.MiddleCenter '列ヘッダーのスタイル(フォント・配置)を設定 Dim columnHeaderStyle As DataGridViewCellStyle = DataGridView1.ColumnHeadersDefaultCellStyle '※ Dim columnHeaderStyle As New DataGridViewCellStyle にすると現在の設定値が初期化されてしまう '(2)水平方向と垂直方向を中央に配置 columnHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleCenter '(3)フォントスタイルを設定 columnHeaderStyle.Font = New Font("MS 明朝", 12, FontStyle.Bold) 'キャプションテキストを2段書き(複数行)で表示 ' columnHeaderStyle.WrapMode = DataGridViewTriState.True DataGridView1.ColumnHeadersDefaultCellStyle = columnHeaderStyle 'ヘッダーの高さを設定 '(4)列ヘッダーの高さの設定をユーザーが変更出来るように設定(でないと高さの設定ができない) DataGridView1.ColumnHeadersHeightSizeMode = _ DataGridViewColumnHeadersHeightSizeMode.DisableResizing '(5)列ヘッダーの高さを40ピクセルに設定(既定値は 23 ピクセルです) DataGridView1.ColumnHeadersHeight = 40 End Sub |
||||
3.DataGridView の行ヘッダー及び列ヘッダーを非表示に設定 Private Sub Button13_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button13.Click '(1)行ヘッダーを非表示に設定 DataGridView1.RowHeadersVisible = False ' DataGridView1.RowHeadersVisible = (Not DataGridView1.RowHeadersVisible) '(2)列ヘッダーを非表示に設定 DataGridView1.ColumnHeadersVisible = False ' DataGridView1.ColumnHeadersVisible = Not DataGridView1.ColumnHeadersVisible End Sub |
||||
4.DataGridView の行ヘッダーに行番号を描画する Private Sub DataGridView1_RowPostPaint(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DataGridViewRowPostPaintEventArgs _ ) Handles DataGridView1.RowPostPaint '行ヘッダーに行番号を描画する '描画位置の設定 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 Sub |
||||
5.DataGridView の行のヘッダーセルのキャプションテキスト(項目名)を取得・設定 Private Sub Button15_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button15.Click '(1)6行目のヘッダーセルのキャプションテキストを設定 DataGridView1.Rows(5).HeaderCell.Value = "6行目" '(2)6行目のヘッダーセルのキャプションテキストを取得 Debug.WriteLine(DataGridView1.Rows(5).HeaderCell.Value) End Sub |
||||
6.DataGridView の行ヘッダーの表示スタイル設定色々 Private Sub Button16_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button16.Click DataGridView1.RowHeadersWidth = 150 '(1)行ヘッダーの幅を設定 Dim rowHeaderStyle As DataGridViewCellStyle = DataGridView1.RowHeadersDefaultCellStyle '※ Dim columnHeaderStyle As New DataGridViewCellStyle にすると現在の設定値が初期化されてしまう '(2)水平方向は左端に垂直方向を中央に配置 rowHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleLeft '(3)フォントスタイルを設定 rowHeaderStyle.Font = New Font("MS 明朝", 12, FontStyle.Bold) '(4)キャプションテキストを2段書き(複数行)で表示 ' columnHeaderStyle.WrapMode = DataGridViewTriState.True DataGridView1.RowHeadersDefaultCellStyle = rowHeaderStyle '(5)6行目のヘッダーセルの高さを設定 DataGridView1.Rows(5).Height = 40 End Sub 上記の以外は、[列ヘッダーの表示スタイル設定色々]も参考にしてください |
||||
7.DataGridView の行ヘッダー及び列ヘッダーのカラー設定色々 Private Sub Button17_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button17.Click '行及び列ヘッダーのカラー設定 '※ visual スタイルを False に設定しておかないとカラー設定が有効にならない。 '(1)ヘッダーの visual スタイルを有効か無効に設定(既定値は有効で true ) DataGridView1.EnableHeadersVisualStyles = False '(2)全ての列ヘッダーの(ForeColor)前景色を設定 DataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = Color.Red '(3)全ての列ヘッダーの(BackColor)背景色を設定 DataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.Cyan '(4)4列目のヘッダーの(ForeColor)前景色を設定 DataGridView1.Columns(3).HeaderCell.Style.ForeColor = Color.Yellow '(5)4列目の列ヘッダーの(BackColor)背景色を設定 DataGridView1.Columns(3).HeaderCell.Style.BackColor = Color.Red '(6)全ての行ヘッダーの(BackColor)背景色を設定 DataGridView1.RowHeadersDefaultCellStyle.BackColor = Color.LimeGreen '(7)全ての行ヘッダーの(ForeColor)前景色を設定 DataGridView1.RowHeadersDefaultCellStyle.ForeColor = Color.Red '(8)全ての列ヘッダーの(BackColor)背景色を設定 DataGridView1.Rows(10).HeaderCell.Value = "11行目" '(9)11行目の列ヘッダーの(BackColor)背景色を設定 DataGridView1.Rows(10).HeaderCell.Style.BackColor = Color.Red '(10)11行目のヘッダーの(ForeColor)前景色を設定 DataGridView1.Rows(10).HeaderCell.Style.ForeColor = Color.Yellow End Sub |
||||
8.DataGridView の左端上端のヘッダー(TopLeftHeader)に対する設定色々 Private Sub Button18_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button18.Click '(1)ヘッダーの高さが変更されるので、現在のヘッダーの高さを取得 Dim hh As Integer = DataGridView1.ColumnHeadersHeight '(2)ヘッダーセルにタイトルを書き込み DataGridView1.TopLeftHeaderCell.Value = "連番" '(3)ヘッダーの高さの設定をユーザーが出来るように設定(でないと高さの設定ができない) DataGridView1.ColumnHeadersHeightSizeMode = _ DataGridViewColumnHeadersHeightSizeMode.DisableResizing '(4)ヘッダーの高さを設定 DataGridView1.ColumnHeadersHeight = hh '(5)ヘッダーの visual スタイルが有効になっている場合は true。 'True の場合は、下記 BackColor の設定が有効にならない。(既定値は、true) DataGridView1.EnableHeadersVisualStyles = False '(6)ヘッダーの(BackColor)背景色を設定 DataGridView1.TopLeftHeaderCell.Style.BackColor = Color.Green '(7)ヘッダーの(ForeColor)前景色を設定 DataGridView1.TopLeftHeaderCell.Style.ForeColor = Color.Yellow End Sub |
||||
9.DataGridView の左上端のヘッダーをクリックした時全て選択になるのを回避 Private Sub DataGridView1_CellMouseClick(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) _ Handles DataGridView1.CellMouseClick '左上端のヘッダーをクリックした時全て選択になるのを回避する Dim pos As System.Windows.Forms.DataGridView.HitTestInfo = DataGridView1.HitTest(e.X, e.Y) If pos.ColumnIndex = -1 And pos.RowIndex = -1 Then DataGridView1.MultiSelect = False End If Else DataGridView1.MultiSelect = True End If End Sub |
||||
10.DataGridView の行ヘッダーのカレントセルを表す三角マークを非表示に設定する '下記の1行を初期表示前に設定してください。(Form1_Load イベントでも OK) DataGridView1.RowTemplate.HeaderCell = New dgvRowHeaderCell() 'Defaultの状態に戻す場合(▼を表示) DataGridView1.RowTemplate.HeaderCell = Nothing 別途、下記をクラスを記入の事(Public Class Form1 内でも可) '行ヘッダーのカレントセルを表す三角マークを非表示に設定する為のクラス。 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 詳しくは、MSDN で、DataGridViewHeaderCell.Paint メソッド を参照願います。 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datagridviewheadercell.paint.aspx |
||||
11.DataGridView の列ヘッダーのソートマークの三角を非表示に設定する 'こちらは、表示後の設定となります。 Button2.PerformClick() 'ソートの三角マークを非表示にする為に、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 '列ヘッダーのソートマークの三角を非表示に設定する為のクラス。 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 [10.DataGridView の行ヘッダーのカレントセルを表す三角マークを非表示に設定する] と同要領です。 |
||||
12.DataGridView の列ヘッダーセルをクリックした場合のエラー回避 Private Sub DataGridView1_CellClick(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick 'ヘッダーセルをクリックした場合は、無視する事によってエラーを回避(ソートは可能) 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 'のようにして、セルのタイプを調べる事ができる End If |
||||