Подтвердить что ты не робот

Открыть раскрывающийся список (в представлении данных) с одним щелчком мыши

Как я могу избежать двойного щелчка на DropDownButton, используемом в DataGridView? Прямо сейчас я могу просмотреть выпадающие элементы в DataGridView, нажав два или более раз. В первый раз он выбирает ячейку и второй раз, когда я нажимаю на стрелку DropDownButton, она показывает список. Как я могу достичь одного и того же за один клик?

4b9b3361

Ответ 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.

Что это.