DataGridViewCellFormattingEventHandler Delegasikan

Definisi

Mewakili metode yang akan menangani CellFormatting peristiwa DataGridView.

public delegate void DataGridViewCellFormattingEventHandler(System::Object ^ sender, DataGridViewCellFormattingEventArgs ^ e);
public delegate void DataGridViewCellFormattingEventHandler(object sender, DataGridViewCellFormattingEventArgs e);
public delegate void DataGridViewCellFormattingEventHandler(object? sender, DataGridViewCellFormattingEventArgs e);
type DataGridViewCellFormattingEventHandler = delegate of obj * DataGridViewCellFormattingEventArgs -> unit
Public Delegate Sub DataGridViewCellFormattingEventHandler(sender As Object, e As DataGridViewCellFormattingEventArgs)

Parameter

sender
Object

Sumber dari peristiwa tersebut.

Contoh

Contoh kode berikut menunjukkan cara menangani CellFormatting peristiwa.

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

Keterangan

CellFormatting Tangani peristiwa untuk menyesuaikan konversi nilai sel ke dalam format yang cocok untuk ditampilkan atau untuk menyesuaikan tampilan sel tergantung pada status atau nilainya.

Peristiwa terjadi CellFormatting setiap kali setiap sel dicat, jadi Anda harus menghindari pemrosesan panjang saat menangani peristiwa ini. Kejadian ini juga terjadi ketika sel FormattedValue diambil atau metodenya GetFormattedValue dipanggil.

Saat Anda menangani CellFormatting peristiwa, properti diinisialisasi ConvertEventArgs.Value dengan nilai sel. Jika Anda memberikan konversi kustom dari nilai sel ke nilai tampilan, atur ConvertEventArgs.Value properti ke nilai yang dikonversi, memastikan bahwa nilai baru adalah jenis yang ditentukan oleh properti sel FormattedValueType . Untuk menunjukkan bahwa tidak ada pemformatan nilai lebih lanjut yang diperlukan, atur properti ke DataGridViewCellFormattingEventArgs.FormattingAppliedtrue.

Ketika penanganan aktivitas selesai, jika ConvertEventArgs.Value adalah null atau bukan jenis yang benar, atau DataGridViewCellFormattingEventArgs.FormattingApplied properti adalah false, Value diformat menggunakan Formatproperti , NullValue, DataSourceNullValue, dan FormatProvider dari gaya sel yang dikembalikan oleh DataGridViewCellFormattingEventArgs.CellStyle properti , yang diinisialisasi menggunakan properti sel InheritedStyle .

Terlepas dari DataGridViewCellFormattingEventArgs.FormattingApplied nilai properti , properti tampilan objek yang dikembalikan oleh DataGridViewCellFormattingEventArgs.CellStyle properti digunakan untuk merender sel.

Untuk informasi selengkapnya tentang pemformatan kustom menggunakan CellFormatting peristiwa, lihat Cara: Mengkustomisasi Pemformatan Data di kontrol Formulir Windows DataGridView.

Untuk menghindari penalti performa saat menangani peristiwa ini, akses sel melalui parameter penanganan aktivitas daripada mengakses sel secara langsung.

Untuk mengkustomisasi konversi nilai yang diformat dan ditentukan pengguna menjadi nilai sel aktual, tangani CellParsing peristiwa.

Untuk informasi selengkapnya tentang cara menangani peristiwa, lihat Menangani dan Menaikkan Peristiwa.

Saat membuat DataGridViewCellFormattingEventHandler delegasi, Anda mengidentifikasi metode yang akan menangani peristiwa. Untuk mengaitkan peristiwa dengan penanganan aktivitas Anda, tambahkan instans delegasi ke peristiwa. Penanganan aktivitas dipanggil setiap kali peristiwa terjadi, kecuali Anda menghapus delegasi. Untuk informasi selengkapnya tentang delegasi penanganan aktivitas, lihat Menangani dan Menaikkan Peristiwa.

Metode Ekstensi

GetMethodInfo(Delegate)

Mendapatkan objek yang mewakili metode yang diwakili oleh delegasi yang ditentukan.

Berlaku untuk

Lihat juga