Открытие выпадающего списка (в представлении datagrid) элементов одним щелчком мыши
Как я могу избежать двойного щелчка на DropDownButton, используемого в DataGridView? Прямо сейчас я могу просматривать выпадающие элементы в DataGridView, нажав два или более раз. В первый раз он выбирает ячейку, а во второй раз, когда я нажимаю на стрелку DropDownButton, он показывает список. Как я могу добиться того же в один клик?
3 ответов:
Вы можете достичь этого, подписавшись на событие
EditingControlShowingсетки и там для управления типомComboBoxComboBox ctl = e.Control as ComboBox; ctl.Enter -= new EventHandler(ctl_Enter); ctl.Enter += new EventHandler(ctl_Enter);И в событии Enter используйте свойство
void ctl_Enter(object sender, EventArgs e) { (sender as ComboBox).DroppedDown = true; }DroppedDown указывает, как следует из названия, отображается ли выпадающая область или нет, поэтому всякий раз, когда элемент управления вводится, он будет установлен в true и отображать элементы без необходимости дальнейших кликов.
Установить
EditModeсвойствоDataGridViewвEditOnEnter: Ссылка
DataGridView.EditMode- возвращает или задает значение, указывающее, как начать редактирование ячейки.
EditOnEnter- редактирование начинается, когда ячейка получает фокус.
"set EditMode свойство DataGridView для EditOnEnter" работал для меня, но я нашел другую проблему: пользователь не может удалить строку, просто выбрав и нажав клавишу DEL. Итак, поиск в google дал мне другой способ сделать это. Просто поймайте событие CellEnter и проверьте, является ли ячейка соответствующим типом для выполнения соответствующего действия, как этот пример кода:
private void Form_OnLoad(object sender, EventArgs e){ dgvArmazem.CellEnter += new DataGridViewCellEventHandler(dgvArmazem_CellEnter); } void dgvArmazem_CellEnter(object sender, DataGridViewCellEventArgs e) { DataGridView dg = (DataGridView)sender; if (dg.CurrentCell.EditType == typeof(DataGridViewComboBoxEditingControl)) { SendKeys.Send("{F4}"); } }Теперь ComboBox падает быстрее, и пользователь по-прежнему удаляет строку, выбрав строку и нажав DEL ключ.
Вот и все.
Comments