Инициализация сетки

в этом методе есть закомментированная

После инициализации данных конструктор вызывает вспомогательный метод InitGrid, Который делает следующее: Применяет к коллекции Rows Метод AddCopies, Чтобы добавить к сетке еще миллион строк. В этом методе есть закомментированная строчка, которая позволяет изменить готовый пример VirtualMode Так, чтобы он использовал привязку к данным коллекции объектов; тем самым вы сможете увидеть различие двух подходов в плане расхода памяти и времени загрузки. После этого контроль над происходящим переходит к механизмам управления событиями Windows Forms. Поскольку для сетки был установлен виртуальный режим, далее начнет вызываться обработчик OnCellVa — LueNeeded Для каждой ячейки, видимой в сетке в данный момент. Код этого метода извлекает из коллекции данных соответствующие значения для ячеек, отображаемых в первых двух столбцах. Для третьего столбца метод фактически вычисляет значение ячейки на ходу, используя класс Random Для генерирования случайных чисел. Он также устанавливает флаг в коллекции M Visited, Который позволяет вам определить, сколько строк действительно отображалось при прокрутке сетки за время работы приложения. Когда вы запустите образец приложения VirtualMode из листинга 6.2, обратите внимание, что при перемещении по ячейкам в третьем столбце сетки случайные числа в них изменяются. Это происходит потому, что обработчик события CellValueNeeded Вызывается при каждой перерисовке ячейки, а не только когда она впервые появляется в области сетки, отображаемой при прокрутке, а класс Random В качестве семени для вычисления следующего случайного числа использует текущее время. Поэтому получаемые для ячейки значения при каждом вызове CellValueNeeded Зависят от времени, и вы, возможно, захотите воспользоваться какой-то лучшей стратегией для вычисления и кэширования этих знаений, чтобы они не изменялись просто из-за перемещения курсора по ячейкам.