DataGridViewCell

DataGridViewのセルを表します。

クラス階層

派生クラス

プロパティ

プロパティ 内容
object Value セルの値 (セルに含まれている実際のデータ)
Type ValueType セルの値のデータ型
object FormattedValue セルの表示用に書式化された値 (セルの書式化された表現)
Type FormattedValueType セルの表示用に書式化された値のデータ型
object EditedFormattedValue セルの書式化された値。編集中かコミット前かに無関係
DataGridView DataGridView この要素に関連付けられているDataGridView。関連付けられていなければnull
DataGridViewColumn OwningColumn セルを格納している列
DataGridViewRow OwningRow セルを格納している行
int ColumnIndex セルの列インデックス
int RowIndex セルの親の行インデックス
Rectangle ContentBounds セルのコンテンツ領域に外接する四角形
string ErrorText セルに関連付けられたエラー条件を表すテキスト
string ToolTipText セルに関連付けられたツールチップ テキスト
DataGridViewCellStyle Style セル用のスタイル
DataGridViewCellStyle InheritedStyle セルに適用されているスタイル
bool HasStyle trueならば、Styleプロパティが設定されている

Styleプロパティにnullを設定することでスタイルを無効にでき、HasStyleはfalseとなる

Styleプロパティの値を取得するとDataGridViewCellStyleのインスタンスが作成され、StyleプロパティはnullではなくなりHasStyleはtrueを返す。よってHasStyleがtrueを返すことでは、Styleプロパティが設定されていることを判定できない

bool ReadOnly trueならば、ユーザーはセルのデータを編集できない

行または列全体に適用するにはDataGridViewRow.ReadOnlyまたはDataGridViewColumn.ReadOnlyで指定でき、これらの設定は個別のセルの設定を上書きする

データソースで読み取り専用に指定されるとこれもtrueとなり、InvalidOperationExceptionとなりfalseには変更できない。

ReadOnlyの指定はユーザーによる編集を制限するだけのため、プログラムからはValueプロパティに設定できる

bool IsInEditMode trueならば、編集モード
bool Selected trueならば、セルが選択されている
bool Displayed trueならば、セルの全部または一部が画面上にある
     
プロパティ - DataGridViewCell Class (System.Windows.Forms) | Microsoft Learn

ErrorText

DataSourceでエラーを表すテキストが設定されていると、それが返されます。これに空文字列を設定してもそれは変更されませんが、空文字列以外を設定するとそれに置き換えられ、次に空文字列を設定すると内容が削除されます。

ToolTipText

マウスポインタがセルに重なったときに、セルのツールチップとして表示する文字列を指定します。このプロパティがEmptyでなければその値が、セルの値が表示されるときに切り詰められているか一部が隠れていればセルの値が表示されます。いずれでもなければ表示されません。Remarks - DataGridViewCell.ToolTipText Property (System.Windows.Forms) | Microsoft Learn

Style

セルのスタイルに作用するプロパティは複数あり、それらが設定されているときには、最も上位のものが適用されます。Style Inheritance - Cell Styles in the Windows Forms DataGridView Control | Microsoft Learn

パフォーマンスを向上させるには、個々のセルにスタイルを指定せず、適用範囲の広い下位のものに指定します。セル スタイルの効率的な使用 - DataGridView コントロールの拡大縮小に関するベスト プラクティス - Windows Forms .NET Framework | Microsoft Learn

ヘッダーセルに影響する設定

  1. DataGridViewCell.Style
  2. DataGridView.ColumnHeadersDefaultCellStyle または DataGridView.RowHeadersDefaultCellStyle ※1
  3. DataGridView.DefaultCellStyle

※1 これらはすべての列ヘッダーと行ヘッダーに適用される。これを個別のヘッダーセルに適用するには、DataGridViewColumn.HeaderCellやDataGridViewRow.HeaderCellを介して設定する。

列ヘッダーを右側に合わせて配置するとき、SortModeがNotSortable以外ではグリフの空間分だけ右に余白ができます。この余白を除去するにはNotSortableとするか、オーナー描画します。c# - Right align a column in datagridview doesn't work - Stack Overflow

ヘッダーセルに指定のスタイルが適用されないときには、EnableHeadersVisualStylesをfalseとします。これが既定のtrueの状態では、視覚スタイルが有効なときはそのスタイルが適用されます。

ヘッダー以外のセルに影響する設定

  1. DataGridViewCell.Style
  2. DataGridViewRow.DefaultCellStyle
  3. DataGridView.AlternatingRowsDefaultCellStyle (奇数番目の行のセルだけ)
  4. DataGridView.RowsDefaultCellStyle
  5. DataGridViewColumn.DefaultCellStyle
  6. DataGridView.DefaultCellStyle

フォーカス喪失時の表示

DataGridViewはフォーカスを失ってもフォーカスのあるセルの表示が変化しないため、それが失われたことを認識しづらくなっています。この問題は、フォーカスの変化時にスタイルを設定し直すことで改善できます。DataGridViewフォーカス消失時のフォーカスがあったセルの青色(紺色)について

private void DataGridView1_Enter(object sender, System.EventArgs e)
{
    dataGridView1.RowsDefaultCellStyle.SelectionForeColor = dataGridView1.DefaultCellStyle.SelectionForeColor;
    dataGridView1.RowsDefaultCellStyle.SelectionBackColor = dataGridView1.DefaultCellStyle.SelectionBackColor;
}

private void DataGridView1_Leave(object sender, System.EventArgs e)
{
    dataGridView1.RowsDefaultCellStyle.SelectionForeColor = dataGridView1.DefaultCellStyle.ForeColor;
    dataGridView1.RowsDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Control;
}

DataGridViewCellStyleクラス

区分 プロパティ 内容
データ object NullValue セルの値がDBNullまたはnullのときに表示する値
動作 string Format テキスト形式の内容に適用される書式指定文字列
配置 DataGridViewContentAlignment Alignment セルの内容の場所を示す値
Padding Padding セルの端とその内容との間隔
DataGridViewTriState WrapMode テキスト形式の内容が1行に収まらないほど長いときに、折り返すか切り捨てるか
表示 Font Font  
Color BackColor  
Color ForeColor  
Color SelectionBackColor  
Color SelectionForeColor  
Properties - DataGridViewCellStyle Class (System.Windows.Forms) | Microsoft Learn

WrapModeプロパティ

このWrapModeをDataGridViewTriState.Trueにすると、テキストが行内に収まらないときに折り返して表示されるようになります。また改行文字で改行されるようになります。DataGridViewCellStyle.WrapMode Property (System.Windows.Forms) | Microsoft Learn

ただし英数字などは、単語の境界と見なされる位置でしか折り返されません。DataGridViewコントロールのセルの文字列を複数行で表示するには?[2.0のみ、C#、VB] - @IT 遠藤孝信 (2006/11/17)

DataGridView.DefaultCellStyleの既定値はDataGridViewTriState.Falseとなっており、行内に収まらないときは省略記号 (ellipsis) が表示されます。一方でDataGridView.ColumnHeadersDefaultCellStyleのそれはDataGridViewTriState.Trueであり、改行して収まらなくても省略記号は表示されません。

派生クラス

  • System.Windows.Forms.DataGridViewHeaderCell
  • System.Windows.Forms.DataGridViewButtonCell
  • System.Windows.Forms.DataGridViewCheckBoxCell
  • System.Windows.Forms.DataGridViewComboBoxCell
  • System.Windows.Forms.DataGridViewImageCell
  • System.Windows.Forms.DataGridViewLinkCell
  • System.Windows.Forms.DataGridViewTextBoxCell
派生 - DataGridViewCell クラス (System.Windows.Forms) | Microsoft Learn

DataGridViewHeaderCell

行や列のヘッダーセルの、基底クラスです。

  • DataGridViewRowHeaderCell
  • DataGridViewColumnHeaderCell
    • DataGridViewTopLeftHeaderCell
DataGridViewHeaderCell クラス (System.Windows.Forms) | Microsoft Learn

DataGridViewLinkCell

リンクがクリックされたことは、DataGridView.CellContentClickイベントで検出できます。

Microsoft Learnから検索