Поделиться через


Режимы выделения содержимого элемента управления DataGridView в Windows Forms

Иногда бывает нужно, чтобы приложение выполняло действия на основе выбора пользователей в элементе управления DataGridView. В зависимости от действий может потребоваться ограничить возможные типы выбора. Например, предположим, что приложение может распечатать отчет для выбранной в настоящий момент записи. В этом случае может потребоваться настроить элемент управления DataGridView таким образом, чтобы при щелчке в любом месте строки всегда выбиралась вся строка, и чтобы за один раз можно было выбрать только одну строку.

Вы можете указать разрешенные варианты выбора, задав для свойства DataGridView.SelectionMode одно из следующих значений перечисления DataGridViewSelectionMode.

Значение DataGridViewSelectionMode Description
CellSelect При щелчке ячейки она выбирается. Заголовки строк и столбцов нельзя использовать для выбора.
ColumnHeaderSelect При щелчке ячейки она выбирается. При щелчке заголовка столбца выбирается весь столбец. Заголовки столбцов нельзя использовать для сортировки.
FullColumnSelect При щелчке ячейки или заголовка столбца выбирается весь столбец. Заголовки столбцов нельзя использовать для сортировки.
FullRowSelect При щелчке ячейки или заголовка строки выбирается вся строка.
RowHeaderSelect Режим выбора по умолчанию. При щелчке ячейки она выбирается. При щелчке заголовка строки выбирается вся строка.

Примечание.

Изменение режима выбора во время выполнения автоматически очищает текущий выбор.

По умолчанию пользователи могут выбирать несколько строк, столбцов или ячеек, перетаскивая их мышью, нажимая клавиши CTRL или SHIFT при выборе, чтобы расширить или изменить выделение, или щелкая ячейку заголовка в верхнем левом углу, чтобы выбрать все ячейки в элементе управления. Чтобы запретить такое поведение, задайте для свойства MultiSelect значение false.

В режимах FullRowSelect и RowHeaderSelect пользователи могут удалять строки, выбирая их и нажимая клавишу DELETE. Пользователи могут удалять строки только в том случае, если текущая ячейка не находится в режиме редактирования, свойство AllowUserToDeleteRows имеет значение true, а базовый источник данных поддерживает удаление строк пользователем. Обратите внимание, что эти параметры не препятствуют удалению строк программным образом.

Программный выбор

Текущий режим выбора ограничивает поведение программного выбора, а также пользовательского выбора. Текущий выбор можно изменить программным способом, задав свойство Selected всех ячеек, строк или столбцов, присутствующих в элементе управления DataGridView. В зависимости от режима выбора вы также можете выбрать все ячейки в элементе управления с помощью метода SelectAll. Чтобы очистить выбор, используйте методClearSelection.

Если свойство MultiSelect имеет значение true, вы можете добавлять элементы DataGridView в выбор или удалять их из него, изменяя свойство Selected элемента. В противном случае при задании значения true для свойства Selected одного элемента другие элементы автоматически удаляются из выбора.

Обратите внимание, что изменение значения свойства CurrentCell не изменяет текущий выбор.

Вы можете получить коллекцию выбранных в текущий момент ячеек, строк или столбцов с помощью свойств SelectedCells, SelectedRows и SelectedColumns элемента управления DataGridView. Если выбрана каждая ячейка элемента управления, обращаться к этим свойствам неэффективно. Чтобы избежать снижения производительности в этом случае, используйте сначала метод AreAllCellsSelected. Кроме того, доступ к этим коллекциям для определения количества выбранных ячеек, строк или столбцов может оказаться неэффективным. Вместо этого следует использовать метод GetCellCount, GetRowCount или GetColumnCount, передавая в него значение Selected.

Совет

Пример кода, демонстрирующий программное использование выбранных ячеек, можно найти в обзоре класса DataGridView.

См. также