1. Построение приложений с привязанными данными в Windows Forms

Замораживание столбцов и строк

часто при прокрутке можно потерять

Когда вы имеете дело с массой столбцов или строк, прокрутка неизбежна. Часто при прокрутке можно потерять контекст строк или столбцов, на которые вы смотрите, особенно если этот контекст указывается значениями в каких-то других строках ил столбцах. Скажем, вы прокручиваете сетку с информацией о продуктах. Если в ней много столбцов, ассоциированных с каждым из продуктов, то при прокрутке вправо, когда вы хотите просмотреть не видимые в данный момент столбцы, вы потеряете контекст наименования продукта, которое при прокрутке уходит с экрана влево. На самом деле в такой ситуации вам нужно заморозить столбец с наименованиями продуктов, чтобы он все время оставался на экране, а прокручивались только остальные столбцы. Подобным же образом бывают случаи, когда вам нужно отображать одну или несколько строк в верхней части сетки, которые должны оставаться на месте при прокрутке сетки вниз к другим ее строкам. В элементе управления DataGridView Это достигается просто: нужно лишь установить в True Свойство Frozen Соответствующего столбца или строки. В частности, если вы замораживаете столбец, то этот столбец и все столбцы слева от него не будут сдвигаться, когда вы производите прокрутку к правому краю сетки. Точно так же при замораживании строки эта строка и те, что расположены выше, не будут смещаться, когда вы станете прокручивать сетку вниз. Если вы собираетесь заморозить столбец или строку, то скорее всего захотите как-то визуально обозначить для пользователя логическую границу между замороженным элементом и незамороженными, которые находятся рядом. Проще всего это можно сделать, установив для свойства Dividerwidth Столбца или DividerHeight Строки значение, отличное от значения по умолчанию. Эти свойства являются целыми значениями, указывающими, сколько пикселов используется для рисования разделителя между ячейками данного столбца или строки и соседними ячейками. Вот простой пример кода, замораживающего одновременно столбец и строку с заданием ширины разделителя: