DataGridView.CellParsing Olay

Tanım

Hücre değeri değiştirildiğinde, hücre düzenleme modundan ayrıldığında gerçekleşir.

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 

Olay Türü

Örnekler

Aşağıdaki kod örneği olayın nasıl işlendiğini CellParsing gösterir. Ayrıca sınıfının nasıl kullanılacağını DataGridViewCellParsingEventArgs da gösterir.

// 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

Açıklamalar

Varsayılan olarak, DataGridView denetim bir hücrede görüntülenen kullanıcı tarafından belirtilen değeri hücre özelliği tarafından belirtilen türdeki gerçek bir temel hücre değerine dönüştürmeyi ValueType dener. Bu dönüştürme, hücre özelliği tarafından döndürülen hücre stilinin InheritedStyle biçimlendirme özelliklerini kullanır.

Standart dönüştürme gereksinimlerinizi karşılamıyorsa, gerekli türe özel değer dönüştürmesi sağlamak için olayı işleyebilir CellParsing .

Kullanıcılar özelliği tarafından belirtilen yöntemi kullanarak düzenleme moduna girebilir ve düzenleme modundan EditMode ayrılarak, değişiklikleri bir hücreye işleyerek, başka bir hücreye taşıyarak veya ENTER tuşuna basarak. ESC tuşuna basıldığında, kaydedilmeden önce değerde yapılan değişiklikler geri döndürülür ve CellParsing olay gerçekleşmez. Olay CellParsing yalnızca, son değer özgün değerle aynı olsa bile hücre değeri gerçekten değiştirilmişse gerçekleşir. Yöntem çağrıldığında CommitEdit da oluşur.

Olayı işlerken CellParsing , değeri kendiniz dönüştürebilir veya varsayılan dönüştürmeyi özelleştirebilirsiniz. Örneğin, seçtiğiniz tür dönüştürücüleriyle hücre ParseFormattedValue yöntemini kullanarak değeri kendiniz dönüştürebilirsiniz. Alternatif olarak, varsayılan tür dönüştürücülerinin değeri ayrıştırmasına izin verebilir, ancak hücre InheritedStyle özelliği kullanılarak başlatılan özelliği tarafından döndürülen nesnenin DataGridViewCellParsingEventArgs.InheritedCellStyle , DataSourceNullValueve FormatProvider özelliklerini değiştirebilirsinizNullValue.

Değeri kendiniz dönüştürdüğünüzde, özelliğin ilk, biçimlendirilmiş değerini ConvertEventArgs.Value hücre ValueType özelliği tarafından belirtilen türdeki dönüştürülmüş değerle değiştirin. Başka ayrıştırma gerekli olmadığını belirtmek için özelliğini olarak trueayarlayınDataGridViewCellParsingEventArgs.ParsingApplied.

Olay işleyicisi tamamlandığında, değeri doğru türdeyse ConvertEventArgs.Valuenull veya değilse veya DataGridViewCellParsingEventArgs.ParsingApplied özelliği isefalseValue, varsayılan tür dönüştürücüleri olan hücre ParseFormattedValue yöntemi kullanılarak ayrıştırılır. Bu yöntemin varsayılan uygulaması, geçirilen hücre stilinin NullValue, DataSourceNullValueve FormatProvider özelliklerini kullanarak değeri ayrıştırıyor. Değer değerine eşit NullValuedeğilse, değer özelliği ve geçirilen tür dönüştürücüleri kullanılarak FormatProvider ayrıştırılır.

Bir hücre değerinin görüntülenmek üzere biçimlendirilmiş bir değere dönüştürülmesi için olayı işleyebilirsiniz CellFormatting .

Olayları işleme hakkında daha fazla bilgi için bkz. Olayları İşleme ve Oluşturma.

Şunlara uygulanır

Ayrıca bkz.