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ならば、セルの全部または一部が画面上にある |
DataSourceでエラーを表すテキストが設定されていると、それが返されます。これに空文字列を設定してもそれは変更されませんが、空文字列以外を設定するとそれに置き換えられ、次に空文字列を設定すると内容が削除されます。
マウスポインタがセルに重なったときに、セルのツールチップとして表示する文字列を指定します。このプロパティがEmptyでなければその値が、セルの値が表示されるときに切り詰められているか一部が隠れていればセルの値が表示されます。いずれでもなければ表示されません。Remarks - DataGridViewCell.ToolTipText Property (System.Windows.Forms) | Microsoft Learn
セルのスタイルに作用するプロパティは複数あり、それらが設定されているときには、最も上位のものが適用されます。Style Inheritance - Cell Styles in the Windows Forms DataGridView Control | Microsoft Learn
パフォーマンスを向上させるには、個々のセルにスタイルを指定せず、適用範囲の広い下位のものに指定します。セル スタイルの効率的な使用 - DataGridView コントロールの拡大縮小に関するベスト プラクティス - Windows Forms .NET Framework | Microsoft Learn
※1 これらはすべての列ヘッダーと行ヘッダーに適用される。これを個別のヘッダーセルに適用するには、DataGridViewColumn.HeaderCellやDataGridViewRow.HeaderCellを介して設定する。
列ヘッダーを右側に合わせて配置するとき、SortModeがNotSortable以外ではグリフの空間分だけ右に余白ができます。この余白を除去するにはNotSortableとするか、オーナー描画します。c# - Right align a column in datagridview doesn't work - Stack Overflow
ヘッダーセルに指定のスタイルが適用されないときには、EnableHeadersVisualStylesをfalseとします。これが既定のtrueの状態では、視覚スタイルが有効なときはそのスタイルが適用されます。
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; }
区分 | 型 | プロパティ | 内容 |
---|---|---|---|
データ | object | NullValue | セルの値がDBNullまたはnullのときに表示する値 |
動作 | string | Format | テキスト形式の内容に適用される書式指定文字列 |
配置 | DataGridViewContentAlignment | Alignment | セルの内容の場所を示す値 |
Padding | Padding | セルの端とその内容との間隔 | |
DataGridViewTriState | WrapMode | テキスト形式の内容が1行に収まらないほど長いときに、折り返すか切り捨てるか | |
表示 | Font | Font | |
Color | BackColor | ||
Color | ForeColor | ||
Color | SelectionBackColor | ||
Color | SelectionForeColor |
この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であり、改行して収まらなくても省略記号は表示されません。
行や列のヘッダーセルの、基底クラスです。
リンクがクリックされたことは、DataGridView.CellContentClickイベントで検出できます。