Поделиться через


DataGridView.CellParsing Событие

Определение

Происходит, когда ячейка выходит из режима редактирования, если значение ячейки было изменено.

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 

Тип события

Примеры

В следующем примере кода показано, как обрабатывать CellParsing событие . Здесь также показано, как использовать DataGridViewCellParsingEventArgs класс .

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

Комментарии

По умолчанию элемент управления пытается преобразовать указанное пользователем значение, отображаемое в ячейке, в фактическое значение базовой ячейки в типе, DataGridView указанном свойством ячейки ValueType . Это преобразование использует свойства форматирования стиля ячейки, возвращаемые свойством ячейки InheritedStyle .

Если стандартное преобразование не соответствует вашим потребностям, обработайте CellParsing событие, чтобы обеспечить пользовательское преобразование значений в требуемый тип.

Пользователи могут перейти в режим редактирования с помощью метода, заданного EditMode свойством , и выйти из режима редактирования, зафиксировав любые изменения в ячейке, перейдя в другую ячейку или нажав клавишу ВВОД. Нажатие клавиши ESC отменить изменения любых изменений в значении до его фиксацииCellParsing, и событие не произойдет. Событие CellParsing возникает только в том случае, если значение ячейки действительно было изменено, даже если конечное значение совпадает с исходным значением. Это также происходит при вызове CommitEdit метода .

При обработке CellParsing события можно преобразовать значение самостоятельно или настроить преобразование по умолчанию. Например, можно преобразовать значение самостоятельно с помощью метода ячейки ParseFormattedValue с преобразователями типов по вашему выбору. Кроме того, можно разрешить преобразователям типов по умолчанию анализировать значение, но изменять NullValueсвойства , DataSourceNullValueи FormatProvider объекта, возвращаемого свойством DataGridViewCellParsingEventArgs.InheritedCellStyle , которое инициализируется с помощью свойства ячейки InheritedStyle .

При преобразовании значения самостоятельно замените исходное форматируемое значение ConvertEventArgs.Value свойства преобразованным значением типа, указанного свойством ячейки ValueType . Чтобы указать, что дальнейший анализ не требуется, присвойте свойству DataGridViewCellParsingEventArgs.ParsingApplied значение true.

Когда обработчик событий завершается, если ConvertEventArgs.Value имеет null или не имеет правильного типа или DataGridViewCellParsingEventArgs.ParsingApplied свойство имеет значение false, Value анализируется с помощью метода ячейки ParseFormattedValue с преобразователями типов по умолчанию. Реализация этого метода по умолчанию анализирует значение с помощью NullValueсвойств , DataSourceNullValueи FormatProvider переданного стиля ячейки. Если значение не равно NullValue, значение анализируется с помощью FormatProvider свойства и передаваемых преобразователей типов.

Чтобы настроить преобразование значения ячейки в форматируемое значение для отображения, обработайте CellFormatting событие .

Дополнительные сведения об обработке событий см. в разделе Обработка и вызов событий.

Применяется к

См. также раздел