DataGridViewCellFormattingEventHandler デリゲート
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

Public Delegate Sub DataGridViewCellFormattingEventHandler ( _ sender As Object, _ e As DataGridViewCellFormattingEventArgs _ )
public delegate void DataGridViewCellFormattingEventHandler ( Object sender, DataGridViewCellFormattingEventArgs e )
public delegate void DataGridViewCellFormattingEventHandler ( Object^ sender, DataGridViewCellFormattingEventArgs^ e )
/** @delegate */ public delegate void DataGridViewCellFormattingEventHandler ( Object sender, DataGridViewCellFormattingEventArgs e )

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 イベントを処理します。
イベント処理の詳細については、「イベントの利用」を参照してください。
DataGridViewCellFormattingEventHandler デリゲートを作成する場合は、イベントを処理するメソッドを識別してください。イベントをイベント ハンドラに関連付けるには、デリゲートのインスタンスをイベントに追加します。デリゲートを削除しない限り、そのイベントが発生すると常にイベント ハンドラが呼び出されます。イベント ハンドラ デリゲートの詳細については、「イベントとデリゲート」を参照してください。

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; } } }

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- DataGridViewCellFormattingEventHandler デリゲートのページへのリンク