セルのスタイル(背景色・フォント色・右寄せなど)を変更するには、各セルが持つCellStyleプロパティで行います。
解説
各セルのCellStyleプロパティの値を変更することで、セルごとに外観を変更できます。 一つ一つセルのスタイルを変更するのは面倒なので、まとめて変更する方法が用意されています。 各設定方法には優先度があり、複数の方法で設定した場合は優先度が高いものが優先されます。対象のセル | 指定方法 | 優先度(少さいほど優先) |
---|---|---|
指定列の全セル | dataGridView.Columns[1].DefaultCellStyle | 5 |
全行のセル | dataGridView.RowsDefaultCellStyle | 4 |
奇数行の全セル | dataGridView.AlternatingRowsDefaultCellStyle | 3 |
指定行の全セル | dataGridView.Rows[1].DefaultCellStyle | 2 |
指定行・指定列のセル | dataGridView.Rows[1].Cells[1].Style | 1 |
- 「奇数行の全セル」を変更した後に「全行のセル」を変更しても、優先度の高い「奇数行の全セル」の設定が優先されます。
- 優先度の5と4は逆が正しい気がしますが、このとおりです。
- 指定方法はもう一つ(dataGridView.DefaultCellStyle)ありますが、通常は使用しないので省略しています。
スタイル変更のサンプル
-
C#
// ダミーデータをデータグリッドビューに表示 DataTable dataTable = new DataTable(); dataTable.Columns.Add("奇数/偶数", typeof(string)); dataTable.Columns.Add("中央寄せ 年月表示", typeof(DateTime)); dataTable.Columns.Add("右寄せ カンマ区切り", typeof(int)); dataTable.Columns.Add("左に余白", typeof(string)); dataTable.Columns.Add("折り返し なし", typeof(string)); dataTable.Columns.Add("折り返し あり", typeof(string)); dataTable.Rows.Add("奇数行", DateTime.Now, 100, "左に余白", "あいうえお", "あいうえお"); dataTable.Rows.Add("偶数行", DateTime.Now, 1000, "左に余白", "あいうえお", "あいうえお"); dataTable.Rows.Add("奇数行", DateTime.Now, 10000, "左に余白", "あいうえお", "あいうえお"); dataTable.Rows.Add("偶数行", DateTime.Now, 100000, "左に余白", "あいうえお", "あいうえお"); dataTable.Rows.Add("奇数行", DateTime.Now, 1000000, "左に余白", "あいうえお", "あいうえお"); dataTable.Rows.Add("偶数行", DateTime.Now, 10000000, "左に余白", "あいうえお", "あいうえお"); this.dataGridView1.DataSource = dataTable; this.dataGridView1.Columns[4].Width = 30; this.dataGridView1.Columns[5].Width = 30; // ------------------------------------------------------- // 5種類のスタイルの指定方法 // ------------------------------------------------------- // 2列目のセル背景色をオレンジに this.dataGridView1.Columns[1].DefaultCellStyle.BackColor = Color.Orange; // 全行のセル背景色を緑に this.dataGridView1.RowsDefaultCellStyle.BackColor = Color.LightGreen; // 偶数行のセル背景色を灰色に this.dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Gray; // 2行目のセル背景色を青に this.dataGridView1.Rows[1].DefaultCellStyle.BackColor = Color.LightBlue; // 2行目・2列目のセル背景色をピンクに this.dataGridView1.Rows[1].Cells[1].Style.BackColor = Color.Pink; // ------------------------------------------------------- // 表示位置(Alignment) // ------------------------------------------------------- // センタリング this.dataGridView1.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; // 右寄せ this.dataGridView1.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; // ------------------------------------------------------- // フォントの指定(Font) // ------------------------------------------------------- // メイリオ 9point 太字 this.dataGridView1.Columns[1].DefaultCellStyle.Font = new Font("メイリオ", 9, FontStyle.Bold); // ------------------------------------------------------- // 文字の色(ForeColor) // ------------------------------------------------------- // 文字色を青に this.dataGridView1.Columns[1].DefaultCellStyle.ForeColor = Color.Blue; // ------------------------------------------------------- // フォーマット指定(Format) // ------------------------------------------------------- // DateTime型を年月表記 this.dataGridView1.Columns[1].DefaultCellStyle.Format = "yyyy年MM月"; // int型を3桁毎のカンマ区切り this.dataGridView1.Columns[2].DefaultCellStyle.Format = "#,0"; // ------------------------------------------------------- // 余白(Padding) // ------------------------------------------------------- // セルの左側に20pxの余白 this.dataGridView1.Columns[3].DefaultCellStyle.Padding = new Padding(20,0,0,0); // ------------------------------------------------------- // 折り返し(WrapMode) // ------------------------------------------------------- // 折り返しをしない this.dataGridView1.Columns[4].DefaultCellStyle.WrapMode = DataGridViewTriState.False; // 折り返しをする this.dataGridView1.Columns[5].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
-
VB.NET
' ダミーデータをデータグリッドビューに表示 Dim dataTable As DataTable = New DataTable() dataTable.Columns.Add("奇数/偶数", GetType(String)) dataTable.Columns.Add("中央寄せ 年月表示", GetType(DateTime)) dataTable.Columns.Add("右寄せ カンマ区切り", GetType(Integer)) dataTable.Columns.Add("左に余白", GetType(String)) dataTable.Columns.Add("折り返し なし", GetType(String)) dataTable.Columns.Add("折り返し あり", GetType(String)) dataTable.Rows.Add("奇数行", DateTime.Now, 100, "左に余白", "あいうえお", "あいうえお") dataTable.Rows.Add("偶数行", DateTime.Now, 1000, "左に余白", "あいうえお", "あいうえお") dataTable.Rows.Add("奇数行", DateTime.Now, 10000, "左に余白", "あいうえお", "あいうえお") dataTable.Rows.Add("偶数行", DateTime.Now, 100000, "左に余白", "あいうえお", "あいうえお") dataTable.Rows.Add("奇数行", DateTime.Now, 1000000, "左に余白", "あいうえお", "あいうえお") dataTable.Rows.Add("偶数行", DateTime.Now, 10000000, "左に余白", "あいうえお", "あいうえお") Me.DataGridView1.DataSource = dataTable Me.DataGridView1.Columns(4).Width = 30 Me.DataGridView1.Columns(5).Width = 30 ' ------------------------------------------------------- ' 5種類のスタイルの指定方法 ' ------------------------------------------------------- ' 2列目のセル背景色をオレンジに Me.DataGridView1.Columns(1).DefaultCellStyle.BackColor = Color.Orange ' 全行のセル背景色を緑に Me.DataGridView1.RowsDefaultCellStyle.BackColor = Color.LightGreen ' 偶数行のセル背景色を灰色に Me.DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Gray ' 2行目のセル背景色を青に Me.DataGridView1.Rows(1).DefaultCellStyle.BackColor = Color.LightBlue ' 2行目・2列目のセル背景色をピンクに Me.DataGridView1.Rows(1).Cells(1).Style.BackColor = Color.Pink ' ------------------------------------------------------- ' 表示位置(Alignment) ' ------------------------------------------------------- ' センタリング Me.DataGridView1.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter ' 右寄せ Me.DataGridView1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight ' ------------------------------------------------------- ' フォントの指定(Font) ' ------------------------------------------------------- ' メイリオ 9point 太字 Me.DataGridView1.Columns(1).DefaultCellStyle.Font = New Font("メイリオ", 9, FontStyle.Bold) ' ------------------------------------------------------- ' 文字の色(ForeColor) ' ------------------------------------------------------- ' 文字色を青に Me.DataGridView1.Columns(1).DefaultCellStyle.ForeColor = Color.Blue ' ------------------------------------------------------- ' フォーマット指定(Format) ' ------------------------------------------------------- ' DateTime型を年月表記 Me.DataGridView1.Columns(1).DefaultCellStyle.Format = "yyyy年MM月" ' int型を3桁毎のカンマ区切り Me.DataGridView1.Columns(2).DefaultCellStyle.Format = "#,0" ' ------------------------------------------------------- ' 余白(Padding) ' ------------------------------------------------------- ' セルの左側に20pxの余白 Me.DataGridView1.Columns(3).DefaultCellStyle.Padding = New Padding(20, 0, 0, 0) ' ------------------------------------------------------- ' 折り返し(WrapMode) ' ------------------------------------------------------- ' 折り返しをしない Me.DataGridView1.Columns(4).DefaultCellStyle.WrapMode = DataGridViewTriState.False ' 折り返しをする Me.DataGridView1.Columns(5).DefaultCellStyle.WrapMode = DataGridViewTriState.True
- 実行結果
CellStyleで変更できる外観
CellStyleで変更できる外観は次のとおりです。-
右寄せ・センタリング・左寄せ(Alignmentプロパティ)
-
設定値
設定値 垂直(上下)位置 水平(左右)位置 BottomCenter 下 中央 BottomLeft 下 左 BottomRight 下 右 MiddleCenter 中央 中央 MiddleLeft 中央 左 MiddleRight 中央 右 NotSet 未設定 未設定 TopCenter 上 中央 TopLeft 上 左 TopRight 上 右 -
C#
// センタリング this.dataGridView1.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; // 右寄せ this.dataGridView1.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
-
VB.NET
' センタリング Me.DataGridView1.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter ' 右寄せ Me.DataGridView1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
-
設定値
-
セルの背景色(BackColorプロパティ)
-
C#
// 全行のセル背景色を緑に this.dataGridView1.RowsDefaultCellStyle.BackColor = Color.LightGreen; // 偶数行のセル背景色を灰色に this.dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Gray;
-
VB.NET
' 全行のセル背景色を緑に Me.DataGridView1.RowsDefaultCellStyle.BackColor = Color.LightGreen ' 偶数行のセル背景色を灰色に Me.DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Gray
-
C#
-
使用するフォント・フォントサイズ・太字・イタリック(Fontプロパティ)
-
C#
// メイリオ 9point 太字 this.dataGridView1.Columns[1].DefaultCellStyle.Font = new Font("メイリオ", 9, FontStyle.Bold);
-
VB.NET
' メイリオ 9point 太字 Me.DataGridView1.Columns(1).DefaultCellStyle.Font = New Font("メイリオ", 9, FontStyle.Bold)
-
C#
-
文字の色(ForeColorプロパティ)
-
C#
// 文字色を青に this.dataGridView1.Columns[1].DefaultCellStyle.ForeColor = Color.Blue;
-
VB.NET
' 文字色を青に Me.DataGridView1.Columns(1).DefaultCellStyle.ForeColor = Color.Blue
-
C#
-
書式設定。数値型の3桁カンマ区切りや、日時型の年月表示など(Formatプロパティ)
-
C#
// DateTime型を年月表記 this.dataGridView1.Columns[1].DefaultCellStyle.Format = "yyyy年MM月"; // int型を3桁毎のカンマ区切り this.dataGridView1.Columns[2].DefaultCellStyle.Format = "#,0";
-
VB.NET
' DateTime型を年月表記 Me.DataGridView1.Columns(1).DefaultCellStyle.Format = "yyyy年MM月" ' int型を3桁毎のカンマ区切り Me.DataGridView1.Columns(2).DefaultCellStyle.Format = "#,0"
-
C#
-
セル内の余白(Paddingプロパティ)
-
C#
// セルの左側に20pxの余白 this.dataGridView1.Columns[3].DefaultCellStyle.Padding = new Padding(20,0,0,0);
-
VB.NET
' セルの左側に20pxの余白 Me.DataGridView1.Columns(3).DefaultCellStyle.Padding = New Padding(20, 0, 0, 0)
-
C#
-
折り返し。1行に収まらない時に折り返すか。(WrapModeプロパティ)
-
C#
// 折り返しをしない this.dataGridView1.Columns[4].DefaultCellStyle.WrapMode = DataGridViewTriState.False; // 折り返しをする this.dataGridView1.Columns[5].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
-
VB.NET
' 折り返しをしない Me.DataGridView1.Columns(4).DefaultCellStyle.WrapMode = DataGridViewTriState.False ' 折り返しをする Me.DataGridView1.Columns(5).DefaultCellStyle.WrapMode = DataGridViewTriState.True
-
C#
サンプルコードのダウンロード
サンプルコードの実行には Microsoft Visual Studio 2008 以上のバージョンが必要です。 2008以外のバージョンではプロジェクトを開いた際にファイルの変換が必要な場合があります。その場合は変換後に実行してください。検証環境
- Microsoft Visual Studio 2008 Version 9.0.30729.4462 QFE Edition: Professional
- Microsoft .NET Framework Version 3.5 SP1
- Microsoft Windows 7 Professional Service Pack 1 (Microsoft Windows NT 6.1 (7601))