Udostępnij za pośrednictwem


DataGridViewCellFormattingEventArgs Klasa

Definicja

Udostępnia dane dotyczące CellFormatting zdarzenia .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
Dziedziczenie
DataGridViewCellFormattingEventArgs

Przykłady

W poniższym przykładzie kodu pokazano, jak obsłużyć usługę 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

Uwagi

Obsługa zdarzenia CellFormatting w celu dostosowania konwersji wartości komórki do formatu odpowiedniego do wyświetlania lub dostosowania wyglądu komórki w zależności od jego stanu lub wartości.

Zdarzenie występuje za każdym razem, gdy każda CellFormatting komórka jest malowana, więc należy unikać długiego przetwarzania podczas obsługi tego zdarzenia. To zdarzenie występuje również, gdy komórka FormattedValue jest pobierana lub wywoływana jest jego GetFormattedValue metoda.

Podczas obsługi CellFormatting zdarzenia ConvertEventArgs.Value właściwość jest inicjowana przy użyciu wartości komórki. Jeśli podasz konwersję niestandardową z wartości komórki na wartość wyświetlaną, ustaw ConvertEventArgs.Value właściwość na przekonwertowaną wartość, upewniając się, że nowa wartość jest typu określonego przez właściwość komórki FormattedValueType . Aby wskazać, że nie jest konieczne dalsze formatowanie wartości, ustaw DataGridViewCellFormattingEventArgs.FormattingApplied właściwość na true.

Po zakończeniu procedury obsługi zdarzeń, jeśli ConvertEventArgs.Value obiekt jest null lub nie ma poprawnego typu lub DataGridViewCellFormattingEventArgs.FormattingApplied właściwość to false, Value jest sformatowany przy użyciu Formatwłaściwości , , DataSourceNullValueNullValuei FormatProvider stylu komórki zwróconej przez DataGridViewCellFormattingEventArgs.CellStyle właściwość, która jest inicjowana przy użyciu właściwości komórkiInheritedStyle.

Niezależnie od wartości DataGridViewCellFormattingEventArgs.FormattingApplied właściwości, właściwości wyświetlania obiektu zwróconego przez DataGridViewCellFormattingEventArgs.CellStyle właściwość są używane do renderowania komórki.

Aby uzyskać więcej informacji na temat formatowania niestandardowego przy użyciu zdarzenia, zobacz How to: Customize Data Formatting in the Windows Forms DataGridView Control (Instrukcje: dostosowywanie formatowania danych w kontrolce DataGridView).CellFormatting

Aby uniknąć kar za wydajność podczas obsługi tego zdarzenia, uzyskaj dostęp do komórki za pośrednictwem parametrów programu obsługi zdarzeń, a nie bezpośredniego dostępu do komórki.

Aby dostosować konwersję sformatowanej wartości określonej przez użytkownika do rzeczywistej wartości komórki, obsłuż zdarzenie CellParsing .

Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz Obsługa i podnoszenie zdarzeń.

Konstruktory

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

Inicjuje nowe wystąpienie klasy DataGridViewCellFormattingEventArgs.

Właściwości

CellStyle

Pobiera lub ustawia styl komórki, która jest sformatowana.

ColumnIndex

Pobiera indeks kolumn komórki, która jest sformatowana.

DesiredType

Pobiera typ danych żądanej wartości.

(Odziedziczone po ConvertEventArgs)
FormattingApplied

Pobiera lub ustawia wartość wskazującą, czy wartość komórki została pomyślnie sformatowana.

RowIndex

Pobiera indeks wierszy komórki, która jest sformatowana.

Value

Pobiera lub ustawia wartość .ConvertEventArgs

(Odziedziczone po ConvertEventArgs)

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też