DataGridView.CellParsing DataGridView.CellParsing DataGridView.CellParsing DataGridView.CellParsing Event

Определение

Происходит, когда ячейка выходит из режима редактирования, если значение ячейки было изменено.Occurs when a cell leaves edit mode if the cell value has been modified.

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 как выполнить обработку события.The following code example shows how to handle the CellParsing event. В нем также показано, DataGridViewCellParsingEventArgs как использовать класс.It also shows how to use the DataGridViewCellParsingEventArgs class.

// 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 Cell.By default, the DataGridView control will attempt to convert a user-specified value displayed in a cell to an actual underlying cell value in the type specified by the cell ValueType property. Это преобразование использует свойства форматирования стиля ячейки, возвращаемого свойством Cell InheritedStyle .This conversion uses the formatting properties of the cell style returned by the cell InheritedStyle property.

Если стандартное преобразование не соответствует вашим потребностям, обработайте CellParsing событие, чтобы обеспечить преобразование настраиваемого значения в требуемый тип.If the standard conversion does not meet your needs, handle the CellParsing event to provide custom value conversion to the required type.

Пользователи могут перейти в режим правки с помощью метода, заданного EditMode свойством, и оставить режим редактирования, заменив любые изменения в ячейке, переместив в другую ячейку или нажав клавишу ВВОД.Users can enter edit mode using the method specified by the EditMode property, and can leave edit mode, committing any changes to a cell, by moving to another cell or by pressing ENTER. Нажатие клавиши Esc приведет к отмене всех изменений в значении до его фиксации, и CellParsing событие не будет выполняться.Pressing ESC will revert any changes to the value before it is committed, and the CellParsing event will not occur. Это CellParsing событие возникает только в том случае, если значение ячейки фактически было изменено, даже если последнее значение совпадает с исходным.The CellParsing event occurs only if the cell value has actually been modified, even if the final value is the same as the original value. Это также происходит при CommitEdit вызове метода.It also occurs when the CommitEdit method is called.

При обработке CellParsing события можно преобразовать значение самостоятельно или настроить преобразование по умолчанию.When you handle the CellParsing event, you can convert the value yourself or you can customize the default conversion. Например, можно преобразовать значение самостоятельно с помощью метода ячейки ParseFormattedValue с выбранными преобразователями типов.For example, you can convert the value yourself using the cell ParseFormattedValue method with type converters of your choosing. Кроме того, можно разрешить преобразователям типов по умолчанию анализировать значение, но изменять NullValueсвойства DataSourceNullValue, и FormatProvider объекта, возвращаемые DataGridViewCellParsingEventArgs.InheritedCellStyle свойством, которое инициализируется с помощью ячейки InheritedStyle . свойства.Alternatively, you can let the default type converters parse the value, but modify the NullValue, DataSourceNullValue, and FormatProvider properties of the object returned by the DataGridViewCellParsingEventArgs.InheritedCellStyle property, which is initialized using the cell InheritedStyle property.

При самостоятельном преобразовании значения замените начальное, отформатированное значение ConvertEventArgs.Value свойства преобразованным значением в типе, указанном свойством Cell. ValueTypeWhen you convert the value yourself, replace the initial, formatted value of the ConvertEventArgs.Value property with the converted value in the type specified by the cell ValueType property. Чтобы указать, что дальнейший синтаксический анализ не требуется, DataGridViewCellParsingEventArgs.ParsingApplied присвойте trueсвойству значение.To indicate that no further parsing is necessary, set the DataGridViewCellParsingEventArgs.ParsingApplied property to true.

По завершении работы обработчика событий, если ConvertEventArgs.Value параметр null имеет значение или имеет неправильный тип или DataGridViewCellParsingEventArgs.ParsingApplied свойство имеет falseзначение, то Value анализируется с помощью метода ячейки ParseFormattedValue с преобразователями типов по умолчанию.When the event handler completes, if the ConvertEventArgs.Value is null or is not of the correct type, or the DataGridViewCellParsingEventArgs.ParsingApplied property is false, the Value is parsed using the cell ParseFormattedValue method with default type converters. Реализация по умолчанию этого метода анализирует значение с помощью NullValueсвойств, DataSourceNullValueи FormatProvider переданного стиля ячейки.The default implementation of this method parses the value using the NullValue, DataSourceNullValue, and FormatProvider properties of the cell style passed in. Если значение не равно NullValue, то значение анализируется FormatProvider с помощью свойства и переданных преобразователей типов.If the value is not equal to NullValue, the value is parsed using the FormatProvider property and the type converters passed in.

Чтобы настроить преобразование значения ячейки в отформатированное значение для вывода, обработайте CellFormatting событие.To customize the conversion of a cell value into a formatted value for display, handle the CellFormatting event.

Дополнительные сведения об обработке событий см. в разделе обработка и вызов событий.For more information about how to handle events, see Handling and Raising Events.

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

Дополнительно