DataGridViewCellFormattingEventArgs クラス

定義

CellFormattingDataGridView イベントのデータを提供します。

public ref class DataGridViewCellFormattingEventArgs : System::Windows::Forms::ConvertEventArgs
public class DataGridViewCellFormattingEventArgs : System.Windows.Forms.ConvertEventArgs
type DataGridViewCellFormattingEventArgs = class
    inherit ConvertEventArgs
Public Class DataGridViewCellFormattingEventArgs
Inherits ConvertEventArgs
継承
DataGridViewCellFormattingEventArgs

次のコード例は、 を処理 CellFormattingする方法を示しています。

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

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

注釈

イベントを CellFormatting 処理して、セル値の表示に適した形式への変換をカスタマイズするか、セルの状態または値に応じてセルの外観をカスタマイズします。

イベントは CellFormatting 各セルが塗りつぶされるたびに発生するため、このイベントを処理する際に長い処理を避ける必要があります。 このイベントは、セル FormattedValue が取得されるか、その GetFormattedValue メソッドが呼び出されたときにも発生します。

イベントを CellFormatting 処理すると、 ConvertEventArgs.Value プロパティはセル値で初期化されます。 セル値から表示値へのカスタム変換を指定する場合は、 プロパティを ConvertEventArgs.Value 変換後の値に設定し、新しい値がセル FormattedValueType プロパティで指定された型であることを確認します。 それ以上の値の書式設定が必要ないことを示すには、 プロパティを DataGridViewCellFormattingEventArgs.FormattingAppliedtrue設定します。

イベント ハンドラーが完了すると、 がnull正しい型であるか、または DataGridViewCellFormattingEventArgs.FormattingApplied プロパティが の場合ConvertEventArgs.ValuefalseValue、 プロパティによってDataGridViewCellFormattingEventArgs.CellStyle返されるセル スタイルの 、NullValueDataSourceNullValue、および FormatProvider プロパティを使用してFormat書式設定されます。このプロパティは、cell InheritedStyle プロパティを使用して初期化されます。

プロパティの値に DataGridViewCellFormattingEventArgs.FormattingApplied 関係なく、 プロパティによって返されるオブジェクトの表示プロパティは DataGridViewCellFormattingEventArgs.CellStyle 、セルのレンダリングに使用されます。

イベントを使用したカスタム書式設定のCellFormatting詳細については、「How to: Customize Data Formatting in the Windows フォーム DataGridView Control」を参照してください。

このイベントを処理するときにパフォーマンスの低下を回避するには、セルに直接アクセスするのではなく、イベント ハンドラーのパラメーターを使用してセルにアクセスします。

書式設定されたユーザー指定の値を実際のセル値に変換するようにカスタマイズするには、 イベントを処理します CellParsing

イベントを処理する方法の詳細については、次を参照してください。処理とイベントの発生します。

コンストラクター

DataGridViewCellFormattingEventArgs(Int32, Int32, Object, Type, DataGridViewCellStyle)

DataGridViewCellFormattingEventArgs クラスの新しいインスタンスを初期化します。

プロパティ

CellStyle

書式指定するセルのスタイルを取得または設定します。

ColumnIndex

書式指定するセルの列インデックスを取得します。

DesiredType

必要な値のデータ型を取得します。

(継承元 ConvertEventArgs)
FormattingApplied

セル値が正常に書式指定されたかどうかを示す値を取得または設定します。

RowIndex

書式指定するセルの行インデックスを取得します。

Value

ConvertEventArgs の値を取得します。値の設定も可能です。

(継承元 ConvertEventArgs)

メソッド

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください