DataGridViewCellFormattingEventArgs クラス
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)


CellFormatting イベントを処理することにより、セル値を表示に適した書式に変換する手順をカスタマイズしたり、セルの状態や値に応じてセルの外観をカスタマイズしたりできます。
CellFormatting イベントはセルが描画されるたびに発生するため、このイベントの処理に時間をかけないようにする必要があります。このイベントは、セルの FormattedValue が取得されたときや、セルの GetFormattedValue メソッドが呼び出されたときにも発生します。
CellFormatting イベントを処理すると、ConvertEventArgs.Value プロパティがセル値に初期化されます。セル値から表示値へのカスタムの変換を行う場合は、ConvertEventArgs.Value プロパティを変換後の値に設定して、新しい値がセルの FormattedValueType プロパティによって指定された型になるようにします。値の書式指定を行う必要がないことを示すには、DataGridViewCellFormattingEventArgs.FormattingApplied プロパティを true に設定します。
イベント ハンドラが終了したときに、ConvertEventArgs.Value が null 参照 (Visual Basic では Nothing) であるか適切な型でない場合、または DataGridViewCellFormattingEventArgs.FormattingApplied プロパティが false の場合、Value は、セルの InheritedStyle プロパティに基づいて初期化される DataGridViewCellFormattingEventArgs.CellStyle プロパティが返すセル スタイルの、Format、NullValue、DataSourceNullValue、および FormatProvider の各プロパティに基づいて書式指定されます。
DataGridViewCellFormattingEventArgs.FormattingApplied プロパティの値に関係なく、DataGridViewCellFormattingEventArgs.CellStyle プロパティによって返されるオブジェクトの表示プロパティを使用してセルが描画されます。
CellFormatting イベントを使用したカスタムの書式指定の詳細については、「方法 : Windows フォーム DataGridView コントロールのデータの書式設定をカスタマイズする」を参照してください。
このイベントの処理に伴うパフォーマンスの低下を防ぐには、セルに直接アクセスせずに、イベント ハンドラのパラメータを通じてセルにアクセスします。
書式指定されたユーザー固有の値を実際のセル値に変換する手順をカスタマイズするには、CellParsing イベントを処理します。

CellFormatting を処理する方法を次のコード例に示します。
Private Sub dataGridView1_CellFormatting(ByVal sender As Object, _ ByVal e As DataGridViewCellFormattingEventArgs) _ Handles dataGridView1.CellFormatting ' If the column is the Artist column, check the ' value. If Me.dataGridView1.Columns(e.ColumnIndex).Name _ = "Artist" Then If e.Value IsNot Nothing Then ' Check for the string "pink" in the cell. Dim stringValue As String = _ CType(e.Value, String) stringValue = stringValue.ToLower() If ((stringValue.IndexOf("pink") > -1)) Then e.CellStyle.BackColor = Color.Pink End If End If ElseIf Me.dataGridView1.Columns(e.ColumnIndex).Name _ = "Release Date" Then ShortFormDateFormat(e) End If End Sub 'Even though the date internaly stores the year as YYYY, using formatting, the 'UI can have the format in YY. Private Shared Sub ShortFormDateFormat(ByVal formatting As DataGridViewCellFormattingEventArgs) If formatting.Value IsNot Nothing Then Try Dim dateString As System.Text.StringBuilder = New System.Text.StringBuilder() Dim theDate As Date = DateTime.Parse(formatting.Value.ToString()) dateString.Append(theDate.Month) dateString.Append("/") dateString.Append(theDate.Day) dateString.Append("/") dateString.Append(theDate.Year.ToString().Substring(2)) formatting.Value = dateString.ToString() formatting.FormattingApplied = True Catch notInDateFormat As FormatException ' Set to false in case there are other handlers interested trying to ' format this DataGridViewCellFormattingEventArgs instance. formatting.FormattingApplied = False End Try End If End Sub
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { // If the column is the Artist column, check the // value. if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Artist") { if (e.Value != null) { // Check for the string "pink" in the cell. string stringValue = (string)e.Value; stringValue = stringValue.ToLower(); if ((stringValue.IndexOf("pink") > -1)) { e.CellStyle.BackColor = Color.Pink; } } } else if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Release Date") { ShortFormDateFormat(e); } } //Even though the date internaly stores the year as YYYY, using formatting, the //UI can have the format in YY. private static void ShortFormDateFormat(DataGridViewCellFormattingEventArgs formatting) { if (formatting.Value != null) { try { System.Text.StringBuilder dateString = new System.Text.StringBuilder(); DateTime theDate = DateTime.Parse(formatting.Value.ToString()); dateString.Append(theDate.Month); dateString.Append("/"); dateString.Append(theDate.Day); dateString.Append("/"); dateString.Append(theDate.Year.ToString().Substring(2)); formatting.Value = dateString.ToString(); formatting.FormattingApplied = true; } catch (FormatException) { // Set to false in case there are other handlers interested trying to // format this DataGridViewCellFormattingEventArgs instance. formatting.FormattingApplied = false; } } }
void dataGridView1_CellFormatting( Object^ /*sender*/, DataGridViewCellFormattingEventArgs^ e ) { // If the column is the Artist column, check the // value. if ( this->dataGridView1->Columns[ e->ColumnIndex ]->Name->Equals( "Artist" ) ) { if ( e->Value != nullptr ) { // Check for the string "pink" in the cell. String^ stringValue = dynamic_cast<String^>(e->Value); stringValue = stringValue->ToLower(); if ( (stringValue->IndexOf( "pink" ) > -1) ) { DataGridViewCellStyle^ pinkStyle = gcnew DataGridViewCellStyle; //Change the style of the cell. pinkStyle->BackColor = Color::Pink; pinkStyle->ForeColor = Color::Black; pinkStyle->Font = gcnew System::Drawing::Font( "Times New Roman",8,FontStyle::Bold ); e->CellStyle = pinkStyle; } } } else if ( this->dataGridView1->Columns[ e->ColumnIndex ]->Name->Equals( "Release Date" ) ) { ShortFormDateFormat( e ); } } //Even though the date internaly stores the year as YYYY, using formatting, the //UI can have the format in YY. void ShortFormDateFormat( DataGridViewCellFormattingEventArgs^ formatting ) { if ( formatting->Value != nullptr ) { try { System::Text::StringBuilder^ dateString = gcnew System::Text::StringBuilder; DateTime theDate = DateTime::Parse( formatting->Value->ToString() ); dateString->Append( theDate.Month ); dateString->Append( "/" ); dateString->Append( theDate.Day ); dateString->Append( "/" ); dateString->Append( theDate.Year.ToString()->Substring( 2 ) ); formatting->Value = dateString->ToString(); formatting->FormattingApplied = true; } catch ( Exception^ /*notInDateFormat*/ ) { // Set to false in case there are other handlers interested trying to // format this DataGridViewCellFormattingEventArgs instance. formatting->FormattingApplied = false; } } }

System.EventArgs
System.Windows.Forms.ConvertEventArgs
System.Windows.Forms.DataGridViewCellFormattingEventArgs


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DataGridViewCellFormattingEventArgs メンバ
System.Windows.Forms 名前空間
DataGridView クラス
DataGridView.CellFormatting イベント
DataGridView.CellParsing イベント
DataGridView.DefaultCellStyle プロパティ
DataGridView.OnCellFormatting
DataGridViewCellStyle
DataGridViewCellStyle.Format
DataGridViewCellStyle.FormatProvider
DataGridViewCellStyle.NullValue
DataGridViewCellStyle.DataSourceNullValue
DataGridViewCell.InheritedStyle プロパティ
DataGridViewCell.Value プロパティ
DataGridViewCell.FormattedValue プロパティ
DataGridViewCell.FormattedValueType プロパティ
DataGridViewCell.GetFormattedValue
DataGridViewCellFormattingEventHandler
FormattingApplied
CellStyle
ConvertEventArgs.Value プロパティ
その他の技術情報
Windows フォーム DataGridView コントロールでのセルのスタイル
方法 : Windows フォーム DataGridView コントロールのデータの書式設定をカスタマイズする
イベントの利用
- DataGridViewCellFormattingEventArgs クラスのページへのリンク