DataGridView.CellFormatting Olay
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir hücrenin içeriğinin görüntülenmesi için biçimlendirilmesi gerektiğinde gerçekleşir.
public:
event System::Windows::Forms::DataGridViewCellFormattingEventHandler ^ CellFormatting;
public event System.Windows.Forms.DataGridViewCellFormattingEventHandler CellFormatting;
public event System.Windows.Forms.DataGridViewCellFormattingEventHandler? CellFormatting;
member this.CellFormatting : System.Windows.Forms.DataGridViewCellFormattingEventHandler
Public Custom Event CellFormatting As DataGridViewCellFormattingEventHandler
Olay Türü
Örnekler
Aşağıdaki kod örneğinde olayın nasıl işlenmeleri gösterilmektedir 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
Açıklamalar
Varsayılan olarak, DataGridView denetim bir hücrenin değerini görüntülemeye uygun bir biçime dönüştürmeyi dener. Örneğin, sayısal bir değeri metin kutusu hücresinde görüntülenmek üzere bir dizeye dönüştürür. Özelliği gibi DefaultCellStyle özellikler tarafından döndürülen özelliğini DataGridViewCellStyle ayarlayarak Format kullanılacak biçimlendirme kuralını belirtebilirsiniz.
Standart biçimlendirme yetersizse, olayı işleyerek biçimlendirmeyi CellFormatting özelleştirebilirsiniz. Bu olay, hücre görüntüsü için kullanılacak tam görüntüleme değerinin yanı sıra arka plan ve ön plan rengi gibi hücre stillerini de belirtmenizi sağlar. Bu, hücre değerinin biçimlendirmeye ihtiyacı olup olmadığına bakılmaksızın her tür hücre biçimlendirmesi için bu olayı işleyebileceğiniz anlamına gelir.
Olay CellFormatting her hücre boyandığında gerçekleşir, bu nedenle bu olayı işlerken uzun işlemelerden kaçınmanız gerekir. Bu olay, hücre FormattedValue alındığında veya GetFormattedValue yöntemi çağrıldığında da gerçekleşir.
Olayı işlediğiniz CellFormatting zaman özelliği ConvertEventArgs.Value hücre değeriyle başlatılır. Hücre değerinden görüntüleme değerine özel dönüştürme sağlarsanız, yeni değerin hücre FormattedValueType özelliği tarafından belirtilen türde olduğundan emin olarak özelliğini dönüştürülmüş değere ayarlayınConvertEventArgs.Value. Başka değer biçimlendirmesinin gerekli olmadığını belirtmek için özelliğini olarak true
ayarlayınDataGridViewCellFormattingEventArgs.FormattingApplied.
Olay işleyicisi tamamlandığında, değeri doğru türdeyse ConvertEventArgs.Valuenull
veya değilse veya DataGridViewCellFormattingEventArgs.FormattingApplied özelliği isefalse
Value, özelliği, hücre özelliği kullanılarak başlatılan özelliği tarafından DataGridViewCellFormattingEventArgs.CellStyle döndürülen hücre stilinin , NullValue, DataSourceNullValueve FormatProvider özellikleri kullanılarak FormatInheritedStyle biçimlendirilir.
Özelliğin değerinden DataGridViewCellFormattingEventArgs.FormattingApplied bağımsız olarak, özelliği tarafından DataGridViewCellFormattingEventArgs.CellStyle döndürülen nesnenin görüntüleme özellikleri hücreyi işlemek için kullanılır.
Olayı kullanarak CellFormatting özel biçimlendirme hakkında daha fazla bilgi için bkz. Nasıl yapılır: Windows Forms DataGridView Denetiminde Veri Biçimlendirmesini Özelleştirme.
Bu olayı işlerken performans cezalarını önlemek için, hücreye doğrudan erişmek yerine olay işleyicisinin parametreleri aracılığıyla hücreye erişin.
Biçimlendirilmiş, kullanıcı tarafından belirtilen bir değerin gerçek bir hücre değerine dönüştürülmesi özelleştirmek için olayı işleyebilir CellParsing .
Olayları işleme hakkında daha fazla bilgi için bkz. Olayları İşleme ve Oluşturma.
Şunlara uygulanır
Ayrıca bkz.
- DefaultCellStyle
- DataGridViewCellStyle
- Format
- FormatProvider
- NullValue
- DataSourceNullValue
- InheritedStyle
- Value
- FormattedValue
- FormattedValueType
- GetFormattedValue(Object, Int32, DataGridViewCellStyle, TypeConverter, TypeConverter, DataGridViewDataErrorContexts)
- DataGridViewCellFormattingEventHandler
- DataGridViewCellFormattingEventArgs
- FormattingApplied
- CellStyle
- Value
- OnCellFormatting(DataGridViewCellFormattingEventArgs)
- CellParsing
- Windows Forms DataGridView Denetimindeki Hücre Stilleri
- Nasıl yapılır: Windows Forms DataGridView Denetiminde Veri Biçimlendirmeyi Özelleştirme
- DataGridView Denetimi (Windows Forms)