Есть DataGridView, который отображает коллекцию экземпляров SomeClass.
public class SomeClass
{
public float FloatValue { get; set; }
public int Format { get; set; }
}
Причем отображать нужно только свойство FloatValue, а после запятой показывать количество знаков, которое лежит в свойстве Format. Источником данных для DataGridView является BindingList. Для отображения FloatValue в конструкторе создана колонка DataGridViewTextBoxColumn, в качестве DataPropertyName указан FloatValue. Свойство Format может быть изменено в процессе исполнения программы.
Варианты, которыми я пытаюсь решить задачу:
1 вариант. Все работает как надо, но очень сильно тормозит, поэтому не могу использовать этот вариант.
private void dataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
SomeClass someClass = dataGridView.Rows[e.RowIndex].DataBoundItem as SomeClass;
string limitFormat = "F" + someClass.Format.ToString();
dataGridView.Columns["FloatValue"].DefaultCellStyle.Format = limitFormat;
}
2 вариант. При смене свойства Format выставляю флаг NeedFormat. В RowPrePaint при взведенном флаге произвожу форматирование и сбрасываю его. При первом отображении видно, что мелькают нужные значения, но потом нулевые дробные части сокращаются ("400" вместо "400,00").
Можно ли все же как-то разово изменить DefaultCellStyle.Format? Да и почему он вообще возвращается в другой формат?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Добрый день! Подскажите, где можно скачать готовые стили для компонент WPF?
Есть несколько классов с параметрами, задача-один из них заменить или добавить класс-конструктор Задачка лёгкая, уровня начальной школы,...
Такая ошибка при попытке создать Splash заставкуПример был взять на MSDN