Share via


DataGridView.CellParsing Kejadian

Definisi

Terjadi saat sel meninggalkan mode edit jika nilai sel telah dimodifikasi.

public:
 event System::Windows::Forms::DataGridViewCellParsingEventHandler ^ CellParsing;
public event System.Windows.Forms.DataGridViewCellParsingEventHandler CellParsing;
public event System.Windows.Forms.DataGridViewCellParsingEventHandler? CellParsing;
member this.CellParsing : System.Windows.Forms.DataGridViewCellParsingEventHandler 
Public Custom Event CellParsing As DataGridViewCellParsingEventHandler 

Jenis Acara

Contoh

Contoh kode berikut menunjukkan cara menangani CellParsing peristiwa. Ini juga menunjukkan cara menggunakan DataGridViewCellParsingEventArgs kelas .

// Handling CellParsing allows one to accept user input, then map it to a different
// internal representation.
void dataGridView1_CellParsing( Object^ /*sender*/, DataGridViewCellParsingEventArgs^ e )
{
   if ( this->dataGridView1->Columns[ e->ColumnIndex ]->Name->Equals( "Release Date" ) )
   {
      if ( e != nullptr )
      {
         if ( e->Value != nullptr )
         {
            try
            {
               // Map what the user typed into UTC.
               e->Value = DateTime::Parse( e->Value->ToString() ).ToUniversalTime();

               // Set the ParsingApplied property to 
               // Show the event is handled.
               e->ParsingApplied = true;
            }
            catch ( FormatException^ /*ex*/ ) 
            {
               // Set to false in case another CellParsing handler
               // wants to try to parse this DataGridViewCellParsingEventArgs instance.
               e->ParsingApplied = false;
            }
         }
      }
   }
}
// Handling CellParsing allows one to accept user input, then map it to a different
// internal representation.
private void dataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e)
{
    if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Release Date")
    {
        if (e != null)
        {
            if (e.Value != null)
            {
                try
                {
                    // Map what the user typed into UTC.
                    e.Value = DateTime.Parse(e.Value.ToString()).ToUniversalTime();
                    // Set the ParsingApplied property to 
                    // Show the event is handled.
                    e.ParsingApplied = true;
                }
                catch (FormatException)
                {
                    // Set to false in case another CellParsing handler
                    // wants to try to parse this DataGridViewCellParsingEventArgs instance.
                    e.ParsingApplied = false;
                }
            }
        }
    }
}
' Handling CellParsing allows one to accept user input, then map it to a different
' internal representation.
Private Sub dataGridView1_CellParsing(ByVal sender As Object, _
    ByVal e As DataGridViewCellParsingEventArgs) _
    Handles dataGridView1.CellParsing

    If Me.dataGridView1.Columns(e.ColumnIndex).Name = _
        "Release Date" Then
        If e IsNot Nothing Then
            If e.Value IsNot Nothing Then
                Try
                    ' Map what the user typed into UTC.
                    e.Value = _
                    DateTime.Parse(e.Value.ToString()).ToUniversalTime()
                    ' Set the ParsingApplied property to 
                    ' Show the event is handled.
                    e.ParsingApplied = True

                Catch ex As FormatException
                    ' Set to false in case another CellParsing handler
                    ' wants to try to parse this DataGridViewCellParsingEventArgs instance.
                    e.ParsingApplied = False
                End Try
            End If
        End If
    End If
End Sub

Keterangan

Secara default, DataGridView kontrol akan mencoba mengonversi nilai yang ditentukan pengguna yang ditampilkan dalam sel menjadi nilai sel dasar aktual dalam jenis yang ditentukan oleh properti sel ValueType . Konversi ini menggunakan properti pemformatan gaya sel yang dikembalikan oleh properti sel InheritedStyle .

Jika konversi standar tidak memenuhi kebutuhan Anda, tangani CellParsing peristiwa untuk memberikan konversi nilai kustom ke jenis yang diperlukan.

Pengguna dapat memasuki mode edit menggunakan metode yang ditentukan oleh EditMode properti , dan dapat meninggalkan mode edit, melakukan perubahan apa pun pada sel, dengan berpindah ke sel lain atau dengan menekan ENTER. Menekan ESC akan mengembalikan perubahan apa pun ke nilai sebelum diterapkan, dan CellParsing peristiwa tidak akan terjadi. Peristiwa CellParsing hanya terjadi jika nilai sel benar-benar telah dimodifikasi, bahkan jika nilai akhir sama dengan nilai aslinya. Ini juga terjadi ketika CommitEdit metode dipanggil.

Saat menangani CellParsing peristiwa, Anda dapat mengonversi nilai sendiri atau Anda dapat menyesuaikan konversi default. Misalnya, Anda dapat mengonversi nilai sendiri menggunakan metode sel ParseFormattedValue dengan pengonversi jenis yang Anda pilih. Atau, Anda dapat membiarkan pengonversi jenis default mengurai nilai, tetapi memodifikasi properti , DataSourceNullValue, dan FormatProvider objek yang dikembalikan oleh DataGridViewCellParsingEventArgs.InheritedCellStyle properti , yang diinisialisasi menggunakan properti selInheritedStyle.NullValue

Saat Anda mengonversi nilai sendiri, ganti nilai awal yang diformat properti ConvertEventArgs.Value dengan nilai yang dikonversi dalam jenis yang ditentukan oleh properti sel ValueType . Untuk menunjukkan bahwa tidak ada penguraian lebih lanjut yang diperlukan, atur properti ke DataGridViewCellParsingEventArgs.ParsingAppliedtrue.

Ketika penanganan aktivitas selesai, jika ConvertEventArgs.Value adalah null atau bukan jenis yang benar, atau DataGridViewCellParsingEventArgs.ParsingApplied properti adalah false, Value diurai menggunakan metode sel ParseFormattedValue dengan pengonversi tipe default. Implementasi default metode ini mengurai nilai menggunakan NullValueproperti , DataSourceNullValue, dan FormatProvider dari gaya sel yang diteruskan. Jika nilainya tidak sama dengan NullValue, nilai diurai menggunakan FormatProvider properti dan pengonversi jenis yang diteruskan.

Untuk mengkustomisasi konversi nilai sel menjadi nilai yang diformat untuk ditampilkan, tangani CellFormatting peristiwa.

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

Berlaku untuk

Lihat juga