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
- Наследование
Примеры
В следующем примере кода показано, как обрабатывать 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) |
Применяется к
См. также раздел
- DataGridView
- CellFormatting
- CellParsing
- DefaultCellStyle
- OnCellFormatting(DataGridViewCellFormattingEventArgs)
- DataGridViewCellStyle
- Format
- FormatProvider
- NullValue
- DataSourceNullValue
- InheritedStyle
- Value
- FormattedValue
- FormattedValueType
- GetFormattedValue(Object, Int32, DataGridViewCellStyle, TypeConverter, TypeConverter, DataGridViewDataErrorContexts)
- DataGridViewCellFormattingEventHandler
- FormattingApplied
- CellStyle
- Value
- Стили ячеек элемента управления DataGridView в Windows Forms
- Практическое руководство. Настройка форматирования данных элемента управления DataGridView в Windows Forms