DataGridView.CellFormatting イベントとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > DataGridView.CellFormatting イベントの意味・解説 

DataGridView.CellFormatting イベント

メモ : このイベントは、.NET Framework version 2.0新しく追加されたものです。

セル内容表示合わせて変換する必要がある場合発生します

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

Public Event CellFormatting As
 DataGridViewCellFormattingEventHandler
Dim instance As DataGridView
Dim handler As DataGridViewCellFormattingEventHandler

AddHandler instance.CellFormatting, handler
public event DataGridViewCellFormattingEventHandler CellFormatting
public:
event DataGridViewCellFormattingEventHandler^ CellFormatting {
    void add (DataGridViewCellFormattingEventHandler^ value);
    void remove (DataGridViewCellFormattingEventHandler^ value);
}
/** @event */
public void add_CellFormatting (DataGridViewCellFormattingEventHandler
 value)

/** @event */
public void remove_CellFormatting (DataGridViewCellFormattingEventHandler
 value)
JScript では、イベント使用できますが、新規に宣言することはできません。
解説解説

既定では、DataGridView コントロールセルの値を表示適した形式変換しようとします。たとえば、数値テキスト ボックス セル表示するために文字列に変換します使用する書式指定規約指定するには、DefaultCellStyle プロパティなどのプロパティによって返された DataGridViewCellStyle の Format プロパティ設定します

標準書式指定不十分な場合は、CellFormatting イベント処理して書式指定カスタマイズできます。このイベントにより、背景色前景色など、セル表示使用する正確な表示値とセル スタイル両方指定できます。つまり、セルの値自体書式指定が必要かどうかに関係なく、あらゆる種類セル書式指定に対してこのイベントを処理できます

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

CellFormatting イベント処理するときに、ConvertEventArgs.Value プロパティセルの値で初期化されますセルの値から表示値へのカスタム変換指定するには、ConvertEventArgs.Value プロパティ変換後の値に設定して新しい値がセルの FormattedValueType プロパティ指定された型になるようにします。値の書式指定不要になったことを指定するには、DataGridViewCellFormattingEventArgs.FormattingApplied プロパティtrue設定します

イベント ハンドラ完了したときに、ConvertEventArgs.Valuenull 参照 (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;
      }

   }
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
DataGridView クラス
DataGridView メンバ
System.Windows.Forms 名前空間
DataGridView.DefaultCellStyle プロパティ
DataGridViewCellStyle
DataGridViewCellStyle.Format
DataGridViewCellStyle.FormatProvider
DataGridViewCellStyle.NullValue
DataGridViewCellStyle.DataSourceNullValue
DataGridViewCell.InheritedStyle
DataGridViewCell.Value
DataGridViewCell.FormattedValue
DataGridViewCell.FormattedValueType
DataGridViewCell.GetFormattedValue
DataGridViewCellFormattingEventHandler
DataGridViewCellFormattingEventArgs
DataGridViewCellFormattingEventArgs.FormattingApplied
DataGridViewCellFormattingEventArgs.CellStyle
ConvertEventArgs.Value プロパティ
OnCellFormatting
CellParsing
その他の技術情報
Windows フォーム DataGridView コントロールでのセルスタイル
方法 : Windows フォーム DataGridView コントロールデータ書式設定カスタマイズする
Windows フォーム DataGridView コントロールでのセルスタイル
DataGridView コントロール (Windows フォーム)



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「DataGridView.CellFormatting イベント」の関連用語

DataGridView.CellFormatting イベントのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



DataGridView.CellFormatting イベントのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS