Как я могу избежать двойного щелчка на DropDownButton
, используемом в DataGridView
? Прямо сейчас я могу просмотреть выпадающие элементы в DataGridView
, нажав два или более раз. В первый раз он выбирает ячейку и второй раз, когда я нажимаю на стрелку DropDownButton
, она показывает список. Как я могу достичь одного и того же за один клик?
Открыть раскрывающийся список (в представлении данных) с одним щелчком мыши
Ответ 1
Вы можете добиться этого, подписавшись на событие EditingControlShowing
сетки и там для управления типом ComboBox
ComboBox 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 и отображает элементы без необходимости дополнительных кликов.
Ответ 2
Задайте EditMode
свойство DataGridView
to EditOnEnter
: ссылка
DataGridView.EditMode
- Возвращает или задает значение, указывающее, как начать редактирование ячейки.
EditOnEnter
- Редактирование начинается, когда ячейка получает фокус.
Ответ 3
"Устанавливал свойство 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.
Что это.