DataGridViewCellFormattingEventArgs Класс

Определение

Предоставляет данные для события CellFormatting объекта DataGridView.

public ref class DataGridViewCellFormattingEventArgs : System::Windows::Forms::ConvertEventArgs
public class DataGridViewCellFormattingEventArgs : System.Windows.Forms.ConvertEventArgs
type DataGridViewCellFormattingEventArgs = class
    inherit ConvertEventArgs
Public Class DataGridViewCellFormattingEventArgs
Inherits ConvertEventArgs
Наследование
DataGridViewCellFormattingEventArgs

Примеры

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

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

Комментарии

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

Событие CellFormatting возникает каждый раз, когда каждая ячейка окрашена, поэтому следует избегать длительной обработки при обработке этого события. Это событие также возникает при извлечении ячейки FormattedValue или вызове ее GetFormattedValue метода.

При обработке CellFormatting события свойство инициализируется ConvertEventArgs.Value значением ячейки. Если вы предоставляете пользовательское преобразование из значения ячейки в отображаемое значение, задайте ConvertEventArgs.Value для свойства преобразованное значение, убедив, что новое значение имеет тип, заданный свойством ячейки FormattedValueType . Чтобы указать, что форматирование значения больше не требуется, задайте для свойства значение DataGridViewCellFormattingEventArgs.FormattingAppliedtrue.

Когда обработчик событий завершается, если ConvertEventArgs.Value имеет null или не имеет правильного типа или DataGridViewCellFormattingEventArgs.FormattingApplied свойство имеет falseзначение , Value форматируется с помощью Formatсвойств , NullValue, DataSourceNullValueи FormatProvider стиля ячейки, возвращаемого свойством DataGridViewCellFormattingEventArgs.CellStyle , которое инициализируется с помощью свойства ячейки InheritedStyle .

Независимо от значения DataGridViewCellFormattingEventArgs.FormattingApplied свойства, свойства отображения объекта, возвращаемого свойством DataGridViewCellFormattingEventArgs.CellStyle , используются для отрисовки ячейки.

Дополнительные сведения о настраиваемом форматировании CellFormatting с помощью события см. в разделе Практическое руководство. Настройка форматирования данных в элементе управления Windows Forms DataGridView.

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

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

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

Конструкторы

DataGridViewCellFormattingEventArgs(Int32, Int32, Object, Type, DataGridViewCellStyle)

Инициализирует новый экземпляр класса DataGridViewCellFormattingEventArgs.

Свойства

CellStyle

Получает или задает стиль форматируемой ячейки.

ColumnIndex

Получает индекс столбца, содержащего форматируемую ячейку.

DesiredType

Возвращает тип данных требуемого значения.

(Унаследовано от ConvertEventArgs)
FormattingApplied

Получает или задает значение, показывающее, было ли успешно отформатировано значение ячейки.

RowIndex

Получает индекс строки, содержащей форматируемую ячейку.

Value

Возвращает или задает значение ConvertEventArgs.

(Унаследовано от ConvertEventArgs)

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

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

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