Есть 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? Да и почему он вообще возвращается в другой формат?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день! Подскажите, где можно скачать готовые стили для компонент WPF?
Есть несколько классов с параметрами, задача-один из них заменить или добавить класс-конструктор Задачка лёгкая, уровня начальной школы,...
Такая ошибка при попытке создать Splash заставкуПример был взять на MSDN