Поведение мыши и клавиатуры по умолчанию в элементе управления DataGrid

Следующая таблица содержит описание способов взаимодействия пользователей с элементом управления DataGridView посредством клавиатуры и мыши.

Примечание.

Чтобы настроить поведение клавиатуры, можно обрабатывать стандартные события клавиатуры, такие как KeyDown. Однако в режиме редактирования размещенный элемент управления редактирования получает ввод с клавиатуры, и события клавиатуры не происходят для элемента управления DataGridView. Чтобы обрабатывать события редактирования элементов управления, прикрепите обработчики к элементу управления редактирования в обработчике событий EditingControlShowing. Либо можно настроить поведение клавиатуры в подклассе DataGridView, переопределив методы ProcessDialogKey и ProcessDataGridViewKey.

Обработка клавиатуры по умолчанию

Основные клавиши навигации и ввода

Клавиша или сочетание клавиш Description
Стрелка вниз Перемещает фокус на ячейку, находящуюся непосредственно под текущей ячейкой. Если фокус находится в последней строке, ничего не происходит.
СТРЕЛКА ВЛЕВО Перемещает фокус на предыдущую ячейку в строке. Если фокус находится в первой ячейке строки, ничего не происходит.
СТРЕЛКА ВПРАВО Перемещает фокус на следующую ячейку в строке. Если фокус находится в последней ячейке строки, ничего не происходит.
Стрелка вверх Перемещает фокус на ячейку, находящуюся непосредственно над текущей ячейкой. Если фокус находится в первой строке, ничего не происходит.
Домашняя страница Перемещает фокус на первую ячейку текущей строки.
Окончание Перемещает фокус на последнюю ячейку текущей строки.
PAGE DOWN Прокручивает элемент управления вниз на количество полностью отображаемых строк. Перемещает фокус на последнюю полностью отображаемую строку без изменения столбца.
PAGE UP Прокручивает элемент управления вверх на количество полностью отображаемых строк. Перемещает фокус на первую отображаемую строку без изменения столбца.
Tab Если значение свойства StandardTab равно false, перемещает фокус на следующую ячейку в текущей строке. Если фокус уже находится в последней ячейке строки, перемещает фокус на первую ячейку в следующей строке. Если фокус находится в последней ячейке элемента управления, перемещает фокус на следующий элемент управления в порядке табуляции родительского контейнера.

Если значение свойства StandardTab равно true, перемещает фокус на следующий элемент управления в порядке табуляции родительского контейнера.
Shift + Tab Если значение свойства StandardTab равно false, перемещает фокус на предыдущую ячейку в текущей строке. Если фокус уже находится в первой ячейке строки, перемещает фокус на последнюю ячейку в предыдущей0 строке. Если фокус находится в первой ячейке элемента управления, перемещает фокус на предыдущий элемент управления в порядке табуляции родительского контейнера.

Если значение свойства StandardTab равно true, перемещает фокус на предыдущий элемент управления в порядке табуляции родительского контейнера.
CTRL + TAB Если значение свойства StandardTab равно false, перемещает фокус на следующий элемент управления в порядке табуляции родительского контейнера.

Если значение свойства StandardTab равно true, перемещает фокус на следующую ячейку в текущей строке. Если фокус уже находится в последней ячейке строки, перемещает фокус на первую ячейку в следующей строке. Если фокус находится в последней ячейке элемента управления, перемещает фокус на следующий элемент управления в порядке табуляции родительского контейнера.
CTRL + SHIFT + TAB Если значение свойства StandardTab равно false, перемещает фокус на предыдущий элемент управления в порядке табуляции родительского контейнера.

Если значение свойства StandardTab равно true, перемещает фокус на предыдущую ячейку в текущей строке. Если фокус уже находится в первой ячейке строки, перемещает фокус на последнюю ячейку в предыдущей0 строке. Если фокус находится в первой ячейке элемента управления, перемещает фокус на предыдущий элемент управления в порядке табуляции родительского контейнера.
CTRL + СТРЕЛКА Перемещает фокус на самую дальнюю ячейку в направлении стрелки.
Ctrl + Home Перемещает фокус на первую ячейку элемента управления.
Ctrl + End Перемещает фокус на последнюю ячейку элемента управления.
CTRL + PAGE DOWN/UP То же, что и PAGE DOWN и PAGE UP.
F2 Помещает текущую ячейку в режим редактирования ячейки, если значение свойства EditMode равно EditOnF2 или EditOnKeystrokeOrF2.
F3 Сортирует текущий столбец, если значение свойства DataGridViewColumn.SortMode равно Automatic. Это то же действие, что и при щелчке заголовка текущего столбца. Доступно с версии .NET Framework 4.7.2. Чтобы включить эту функцию, приложения должны иметь целевую платформу .NET Framework 4.7.2 или более поздней версии, или явно выбирать улучшения специальных возможностей с помощью параметров AppContext.
F4 Если текущая ячейка является DataGridViewComboBoxCell, помещает ее в режим редактирования и отображает раскрывающийся список.
ALT + СТРЕЛКА ВВЕРХ/ВНИЗ Если текущая ячейка является DataGridViewComboBoxCell, помещает ее в режим редактирования и отображает раскрывающийся список.
ALT + СТРЕЛКА ВЛЕВО/ВПРАВО Увеличивает или уменьшает ширину столбца текущей ячейки.
Space Если текущая ячейка является DataGridViewButtonCell, DataGridViewLinkCell или DataGridViewCheckBoxCell, вызывает события CellClick и CellContentClick. Если текущая ячейка является ячейкой DataGridViewButtonCell, также нажимает кнопку. Если текущая ячейка является ячейкой DataGridViewCheckBoxCell, также изменяет состояние отметки.
Введите Фиксирует все изменения в текущей ячейке и строке и перемещает фокус на ячейку непосредственно под текущей ячейкой. Если фокус находится в последней строке, фиксирует все изменения без перемещения фокуса.
Esc Если элемент управления находится в режиме редактирования, отменяет изменения. Если элемент управления не находится в режиме редактирования, отменяет все изменения, внесенные в текущую строку, если элемент управления привязан к источнику данных, который поддерживает редактирование, или виртуальный режим, реализован с областью фиксации на уровне строк.
BACKSPACE Удаляет символ перед точкой вставки при редактировании ячейки.
Удаление Удаляет символ после точки вставки при редактировании ячейки.
Ctrl + Ввод Фиксирует все изменения в текущей ячейке без перемещения фокуса. Также фиксирует все изменения в текущей строке, если элемент управления привязан к источнику данных, который поддерживает редактирование, или виртуальный режим реализован с областью фиксации на уровне строк.
Ctrl + 0 Если текущая ячейка доступна для изменения, вводит в нее значение DBNull.Value. По умолчанию отображаемое значение для значения ячейки DBNull является значением свойства NullValue объекта DataGridViewCellStyle, действующего для текущей ячейки.

Клавиши выбора

Если для свойства MultiSelect задано значение false, а для свойства SelectionMode задано значение CellSelect, изменение текущей ячейки с помощью клавиш навигации изменяет выделение на новую ячейку. Клавиши SHIFT, CTRL и ALT не влияют на это поведение.

Если для свойства SelectionMode задано значение RowHeaderSelect или ColumnHeaderSelect, проявляется такое же поведение, но со следующими дополнениями.

Клавиша или сочетание клавиш Description
Shift + Пробел Выделяет всю строку или столбец (то же действие, что и при щелчке заголовка строки или столбца).
Клавиша навигации (СТРЕЛКИ, PAGE UP/DOWN, HOME, END) Если выбрана вся строка или столбец, изменение текущей ячейки на новую строку или столбец перемещает выделение на всю новую строку или столбец (в зависимости от режима выбора).

Если для свойства MultiSelect задано значение false, а для свойства SelectionMode задано значение FullRowSelect или FullColumnSelect, изменение текущей ячейки на новую строку или столбец с помощью клавиатуры перемещает выделение на полную новую строку или столбец. Клавиши SHIFT, CTRL и ALT не влияют на это поведение.

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

Если для свойства MultiSelect задано значение true, а для свойстваSelectionModeзадано значение FullRowSelect или FullColumnSelect, поведение ячейки привязки и текущей ячейки такое же, но только полные строки или столбцы становятся выбранными или невыбранными.

Обработка мыши по умолчанию

Базовая обработка мыши

Примечание.

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

Действие мыши Description
Нажатие левой кнопки мыши Делает ячейку, на которой произошел щелчок, текущей ячейкой, и вызывает событие DataGridView.CellMouseDown.
Отпускание левой кнопки мыши Вызывает событие DataGridView.CellMouseUp.
Щелчок левой кнопки мыши Вызывает события DataGridView.CellClick и DataGridView.CellMouseClick.
Нажатие левой кнопки мыши и перетаскивание ячейки заголовка столбца Если свойство DataGridView.AllowUserToOrderColumns имеет значениеtrue, перемещает столбец таким образом, чтобы его можно было поместить в новое расположение.

Выделение мышью

Поведение выделения не связано со средней кнопкой мыши и колесом мыши.

Если свойство MultiSelect имеет значение false, а свойство SelectionMode имеет значение CellSelect, применяется следующее поведение.

Действие мыши Description
Щелчок Выбирает только текущую ячейку, если пользователь щелкает ячейку. Поведение выбора не выполняется, если пользователь щелкает заголовок строки или столбца.
Щелкните правой кнопкой мыши Отображает контекстное меню, если оно доступно.

Такое же поведение происходит, если для свойства SelectionMode задано значение RowHeaderSelect или ColumnHeaderSelect, за исключением того, что в зависимости от режима выбора щелчок заголовка строки или столбца выберет всю строку или столбец и задаст в качестве текущей ячейки первую ячейку в строке или столбце.

Если для свойства SelectionMode задано значение FullRowSelect или FullColumnSelect, щелчок по любой ячейке в строке или столбце, выберет всю строку или столбец.

Если для свойства MultiSelect задано значение true, щелчок ячейки при нажатой клавише CTRL или SHIFT изменит режим на выделение нескольких ячеек.

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

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

Если для свойства MultiSelect задано значение true, а для свойства SelectionMode задано значение RowHeaderSelect или ColumnHeaderSelect, щелчок заголовка строки или столбца (в зависимости от режима выбора) при нажатой клавише SHIFT изменит существующий выбор полных строк или столбцов, если такой выбор присутствует. В противном случае будет снято выделение и начнется новый выбор полных строк или столбцов. Если щелкнуть заголовок строки или столбца при нажатой клавише CTRL, произойдет добавление или удаление из текущего выделенного фрагмента строки или столбца, не изменяя текущее выделение.

Если для свойства MultiSelect задано значение true, а свойства SelectionMode имеет значение FullRowSelect или FullColumnSelect, щелчок ячейки при нажатой клавише SHIFT или CTRL работает так же, за исключением того, что затрагиваются только полные строки и столбцы.

См. также