Режимы выделения содержимого элемента управления DataGridView в Windows Forms
Обновлен: Ноябрь 2007
Иногда необходимо, чтобы приложение выполняло действия в зависимости от выбранного пользователем объекта внутри элемента управления DataGridView. В зависимости от действий может потребоваться запрет выбора некоторых типов объектов. Например, предположим, что приложение выполняет печать отчета по выделенной в данный момент записи. В этом случае, элемент управления DataGridView может потребоваться настроить таким образом, чтобы при щелчке в любой области строки выделялась строка целиком и только одна строка одновременно.
Объекты, выбор которых разрешается, можно указать при помощи свойства DataGridView.SelectionMode, присвоив ему одно из следующих значений перечисления DataGridViewSelectionMode.
Значение DataGridViewSelectionMode |
Описание |
---|---|
Выделение ячейки по щелчку кнопкой мыши. Строки и столбцы выделить нельзя. |
|
Выделение ячейки по щелчку кнопкой мыши. Выделение столбца целиком по щелчку на заголовке столбца. Заголовки столбцов нельзя использовать для сортировки. |
|
Выделение столбца целиком по щелчку на ячейке или заголовке столбца. Заголовки столбцов нельзя использовать для сортировки. |
|
Выделение строки целиком по щелчку на ячейке или заголовке строки. |
|
Режим выделения по умолчанию. Выделение ячейки по щелчку кнопкой мыши. Выделение строки целиком по щелчку на заголовке строки. |
Примечание. |
---|
Изменение режима выделения во время выполнения автоматически снимает текущее выделение. |
По умолчанию пользователи могут выделять несколько строк, столбцов или ячеек путем перетаскивания курсора мыши, расширения или изменения области выделения при нажатой клавише CTRL или SHIFT, или по щелчку заголовка верхней левой ячейки для выделения всех строк в элементе управления. Чтобы запретить такое выделение, свойству MultiSelect следует присвоить значение false.
Режимы FullRowSelect и RowHeaderSelect позволяют удалять строки путем их выделения и нажатия клавиши DELETE. Пользователи могут удалить строки только в том случае, если текущая ячейка не в режиме редактирования, свойство AllowUserToDeleteRows имеет значение true, а основной источник данных поддерживает удаление строк пользователем. Обратите внимание, что эти параметры не препятствуют удалению строк программным образом.
Программное выделение
Текущий режим выделения ограничивает возможности программного выделения, равно как и выделения пользователем. Текущее выделение можно изменить программно, установив свойство Selected любых ячеек, строк или столбцов в элементе управления DataGridView. Кроме того, в зависимости от режима выделения можно также выделить все ячейки в элементе управления при помощи метода SelectAll. Чтобы снять выделение, используйте метод ClearSelection.
Если свойство MultiSelect имеет значение true, элементы DataGridView можно добавить в область выделения или исключить их из нее, изменив свойство Selected элемента. В противном случае, присвоение свойству Selected значения true для одного элемента приведет к автоматическому исключению элементов из выделения.
Обратите внимание, что изменение значения свойства CurrentCell не приводит к изменению текущего выделения.
Набор выделенных ячеек, строк или столбцов можно извлечь при помощи свойств SelectedCells, SelectedRows и SelectedColumns элемента управления DataGridView. Если в элементе управления выделены все ячейки, обращение к этим свойствам будет неэффективным. Чтобы избежать снижения производительности в этом случае, сначала используйте метод AreAllCellsSelected. Кроме того, обращение к этим коллекциям для определения числа выделенных ячеек, строк или столбцов может также оказаться неэффективным. Вместо этого следует использовать метод GetCellCount, GetRowCount или GetColumnCount, подставляющий значение Selected.
См. также
Задачи
Ссылки
Другие ресурсы
Выделение данных и операции с буфером обмена в элементе управления DataGridView в Windows Forms