Открытие выпадающего списка (в представлении datagrid) элементов одним щелчком мыши



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

551   3  

3 ответов:

Вы можете достичь этого, подписавшись на событие 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 и отображать элементы без необходимости дальнейших кликов.

Установить 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

    Ничего не найдено.