注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。
DataGridViewの周りの境界線スタイルは、DataGridView.BorderStyleプロパティで変更できます。BorderStyleプロパティに設定できる値は、BorderStyle列挙体のFixedSingle(一重線の境界線、デフォルト)、Fixed3D(3D境界線)、None(境界線なし)のいずれかです。
'DataGridViewの境界線を3Dにする
DataGridView1.BorderStyle = BorderStyle.Fixed3D
//DataGridViewの境界線を3Dにする
DataGridView1.BorderStyle = BorderStyle.Fixed3D;
セルの境界線スタイルは、DataGridView.CellBorderStyleプロパティで変更できます。CellBorderStyleプロパティには、DataGridViewCellBorderStyle列挙値(Customを除く)を指定できます。DataGridViewCellBorderStyle列挙値とその意味は、以下の通りです(MSDN「DataGridViewCellBorderStyle 列挙体」からの抜粋)。
DataGridViewCellBorderStyle列挙体のメンバ名 | 説明 |
---|---|
Custom | カスタマイズされた境界線。 |
None | 境界線なし。 |
Raised 3D | の浮き出した境界線。 |
RaisedHorizontal | 3D の浮き出した水平方向の境界線。 |
RaisedVertical | 3D の浮き出した垂直方向の境界線。 |
Single | 一重線の境界線。(デフォルト) |
SingleHorizontal | 水平方向の一重線の境界線。 |
SingleVertical | 垂直方向の一重線の境界線。 |
Sunken | 3D のくぼんだ境界線。 |
SunkenHorizontal | 3D のくぼんだ水平方向の境界線。 |
SunkenVertical | 3D のくぼんだ垂直方向の境界線。 |
また、ヘッダーセルの境界線スタイルは、DataGridView.ColumnHeadersBorderStyleとRowHeadersBorderStyleプロパティで変更できます。これらのプロパティには、DataGridViewHeaderBorderStyle列挙値(Customを除く)を指定できます。DataGridViewCellBorderStyle列挙値とその意味は、以下の通りです(MSDN「DataGridViewHeaderBorderStyle 列挙体」からの抜粋)。
DataGridViewHeaderBorderStyle列挙体のメンバ名 | 説明 |
---|---|
Custom | カスタマイズされた境界線。 |
None | 境界線なし。 |
Raised(デフォルト) | 3D の浮き出した境界線。 |
Single | 一重線の境界線。 |
Sunken | 3D のくぼんだ境界線。 |
'セルの境界線を水平方向の一重線にする DataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.SingleHorizontal '列ヘッダーの境界線をくぼんだ3Dにする DataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Sunken '行ヘッダーの境界線を一重線にする DataGridView1.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single
//セルの境界線を水平方向の一重線にする DataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.SingleHorizontal; //列ヘッダーの境界線をくぼんだ3Dにする DataGridView1.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Sunken; //行ヘッダーの境界線を一重線にする DataGridView1.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
セルの境界線の色は、DataGridView.GridColorプロパティで変更できます。デフォルトは、ControlDarkDarkです。
ただしこの方法で色を変更できるのは、セルの境界線スタイルが一重線の場合のみです。つまり、CellBorderStyleプロパティでは、Single、SingleHorizontal、SingleVertical、ColumnHeadersBorderStyleおよびRowHeadersBorderStyleでは、Singleが設定されている時です。
補足:MSDN「DataGridView.GridColor プロパティ」によると、Application.EnableVisualStylesメソッドによりvisualスタイルが有効になっている時は、GridColorプロパティの色は使われないということです。しかし、私が試した限りでは、visualスタイルが有効となっている時でも、セルの境界線に関してはGridColorプロパティの色が使われました。ただし、ヘッダーセルの境界線に関しては、visualスタイルが有効になっていると、ヘッダー全体を囲む枠だけがGridColorプロパティの色になりました。visualスタイルを無効にすると、全てのヘッダーセルの境界線がGridColorプロパティの色になりました。つまり、DataGridView.EnableHeadersVisualStylesプロパティをFalseにしてヘッダーのvisualスタイルを無効にすれば、GridColorプロパティの色が使われます。
'セルの境界線を一重線にする DataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.Single 'グリッド線の色を赤にする DataGridView1.GridColor = Color.Red
//セルの境界線を一重線にする DataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.Single; //グリッド線の色を赤にする DataGridView1.GridColor = Color.Red;
CellBorderStyleプロパティでは、組み込まれたスタイルにしかセルの境界線スタイルを変更できません。しかし、DataGridView.AdvancedCellBorderStyleプロパティで取得できるDataGridViewAdvancedBorderStyleオブジェクトのプロパティを変更することにより、セルの上下左右の境界線スタイルを別々に設定することができます。
以下の例では、セルの上と左を二重線のくぼんだ境界線にし、下と右を一重線のくぼんだ境界線にしています。
'セルの上と左を二重線のくぼんだ境界線にし、
'下と右を一重線のくぼんだ境界線にする
DataGridView1.AdvancedCellBorderStyle.Top = _
DataGridViewAdvancedCellBorderStyle.InsetDouble
DataGridView1.AdvancedCellBorderStyle.Right = _
DataGridViewAdvancedCellBorderStyle.Inset
DataGridView1.AdvancedCellBorderStyle.Bottom = _
DataGridViewAdvancedCellBorderStyle.Inset
DataGridView1.AdvancedCellBorderStyle.Left = _
DataGridViewAdvancedCellBorderStyle.InsetDouble
//セルの上と左を二重線のくぼんだ境界線にし、
//下と右を一重線のくぼんだ境界線にする
DataGridView1.AdvancedCellBorderStyle.Top =
DataGridViewAdvancedCellBorderStyle.InsetDouble;
DataGridView1.AdvancedCellBorderStyle.Right =
DataGridViewAdvancedCellBorderStyle.Inset;
DataGridView1.AdvancedCellBorderStyle.Bottom =
DataGridViewAdvancedCellBorderStyle.Inset;
DataGridView1.AdvancedCellBorderStyle.Left =
DataGridViewAdvancedCellBorderStyle.InsetDouble;
DataGridViewAdvancedBorderStyleオブジェクトのTop、Bottom、Left、Rightプロパティに設定できるDataGridViewAdvancedCellBorderStyle列挙値は、以下の通りです(MSDN「DataGridViewAdvancedCellBorderStyle 列挙体」からの抜粋です)。
DataGridViewAdvancedCellBorderStyle列挙体のメンバ名 | 説明 |
---|---|
Inset | 一重線のくぼんだ境界線。 |
InsetDouble | 二重線のくぼんだ境界線。 |
None | 境界線なし。 |
NotSet | 境界線が設定されていません。 |
Outset | 一重線の浮き出した境界線。 |
OutsetDouble | 二重線の浮き出した境界線。 |
OutsetPartial | 浮き出した部分を含む一重線の境界線。 |
Single | 一重線の境界線。 |
ただし、NotSetを設定することはできません。また、RightプロパティにはInsetDoubleやOutsetDoubleを設定できません(RightToLeftプロパティがfalseの時)。さらに、BottomプロパティにInsetDoubleやOutsetDoubleを設定するとおかしくなりますので(セルの下が描画されなくなる)、Bottomプロパティにもこれらの値を設定しないほうがよいでしょう。
AdvancedCellBorderStyleプロパティと同じように、列ヘッダーセルの境界線スタイルはAdvancedColumnHeadersBorderStyleプロパティで、行ヘッダーセルの境界線スタイルはAdvancedRowHeadersBorderStyleプロパティで変更できます。
補足:左上隅のヘッダーセル(列ヘッダーと行ヘッダーが交差する部分)の境界線スタイルは、AdvancedColumnHeadersBorderStyleで変更されますが、AdvancedRowHeadersBorderStyleでは変更されないようです。左上隅のヘッダーセルだけの境界線スタイルを変更するには、DataGridView.AdjustedTopLeftHeaderBorderStyleプロパティをオーバーライドします。
上記のようなお手軽な方法以外に、AdjustColumnHeaderBorderStyle、AdjustRowHeaderBorderStyle、AdjustCellBorderStyleメソッドや、AdjustedTopLeftHeaderBorderStyleプロパティをオーバーライドすることによってセルの上下左右の境界線スタイルを変更することもできます。この方法については、MSDNの「DataGridViewAdvancedBorderStyle クラス」をご覧ください。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。