января 20, 2009

AutoSizeRowsMode

В стандартных UI-компонентах .NET есть такой замечательный компонент как DataGridView. Всем, кому удалось поработать с ним - в курсе. Так вот, создавая очередную табличку, привязал к нему datasource, распихал поля, настроил вид таблицы. И надо было сделать так, чтобы текст внутри ячейки не скрывался, если он не влазит в нее, а увеличивалась высота строки и текст просто переносился внутри этой же ячейки на другую строчку.

Отлично! Для этого же есть замечательное свойтство AutoSizeRowsMode, установив значение которого в AllCells, получаем нужный результат. Но, не тут то было. Все гораздо сложнее. Оказывается, при количестве строк около 1500 (мне столько было нужно, с другим количеством не тестировал) все это дело начинает жутко тормозить. Решение нашлось, конечно, но... осадок то остался :)

Итак, решение:
  1. Установить значение свойства AutoSizeRowsMode в DisplayedCells
  2. Обрабатывать события Resize и Scroll таким образом:
dataGridView.AutoResizeRows( DataGridViewAutoSizeRowsMode.DisplayedCells );

Вот так... все через (_|_).

Комментариев нет: