Поведение мыши и клавиатуры по умолчанию в элементе управления 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 работает так же, за исключением того, что затрагиваются только полные строки и столбцы.
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по