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

Прямой доступ к combobox DataGridView за один клик?

Меня раздражает щелкнуть один раз, чтобы выбрать строку в datagridview, а затем снова щелкнуть, чтобы щелкнуть элемент управления в этой строке (в данном случае это поле со списком).

Есть ли способ настроить эту вещь, чтобы все это можно было сделать одним щелчком мыши вместо двух?

4b9b3361

Ответ 1

Измените свойство EditMode вашего элемента управления DataGridView на "EditOnEnter". Это затронет все столбцы.

Ответ 2

Если вы хотите выборочно применить редактирование с одним щелчком мыши к определенным столбцам, вы можете переключить текущую ячейку во время события MouseDown, чтобы устранить щелчок для редактирования:

// Subscribe to DataGridView.MouseDown when convenient
this.dataGridView.MouseDown += this.HandleDataGridViewMouseDown;

private void HandleDataGridViewMouseDown(object sender, MouseEventArgs e)
{
    // See where the click is occurring
    DataGridView.HitTestInfo info = this.dataGridView.HitTest(e.X, e.Y);

    if (info.Type == DataGridViewHitTestType.Cell)
    {
        switch (info.ColumnIndex)
        {
            // Add and remove case statements as necessary depending on
            // which columns have ComboBoxes in them.

            case 1: // Column index 1
            case 2: // Column index 2
                this.dataGridView.CurrentCell =
                    this.dataGridView.Rows[info.RowIndex].Cells[info.ColumnIndex];
                break;
            default:
                break;
        }
    }
}

Конечно, если ваши столбцы и их индексы являются динамическими, вам нужно немного изменить это.

Ответ 3

Мне удалось активировать поле со списком и опустить его одним щелчком мыши, установив свойство EditMode DataGridView на EditOnEnter и создав EditingControlShowing. > событие и добавленный код, чтобы выпадать поле со списком в этом случае.

Подробнее см. http://newapputil.blogspot.in/2015/08/add-combo-box-in-cell-of-datagridview.html