Ответ 1
Измените свойство EditMode вашего элемента управления DataGridView на "EditOnEnter". Это затронет все столбцы.
Меня раздражает щелкнуть один раз, чтобы выбрать строку в datagridview, а затем снова щелкнуть, чтобы щелкнуть элемент управления в этой строке (в данном случае это поле со списком).
Есть ли способ настроить эту вещь, чтобы все это можно было сделать одним щелчком мыши вместо двух?
Измените свойство EditMode вашего элемента управления DataGridView на "EditOnEnter". Это затронет все столбцы.
Если вы хотите выборочно применить редактирование с одним щелчком мыши к определенным столбцам, вы можете переключить текущую ячейку во время события 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;
}
}
}
Конечно, если ваши столбцы и их индексы являются динамическими, вам нужно немного изменить это.
Мне удалось активировать поле со списком и опустить его одним щелчком мыши, установив свойство EditMode DataGridView на EditOnEnter и создав EditingControlShowing. > событие и добавленный код, чтобы выпадать поле со списком в этом случае.
Подробнее см. http://newapputil.blogspot.in/2015/08/add-combo-box-in-cell-of-datagridview.html