Как назначить горячую клавишу для столбца комбинированного списка данных?

У меня есть вид сетки есть столбец со списком ["column2"]

     if (keyData == (Keys.F11))
                {

                    for (int i = 0; i < dataGridView1.RowCount - 1; i++)
                    {

   //here i want to change index automatically  using hot key  (keyboard short cut )
                    }
                    return true;

1 ответ

Вы не можете напрямую назначить ShortcutKey в отдельную клетку. Обрабатывать KeyPress событие DataGridView для сочетаний клавиш. В обработчике событий введите следующий код

void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
    if(e.KeyData == (Keys.Alt | Keys.E))
    {
        dataGridView1.Rows[RowIndex].Cells[ColumnIndex].Selected = true;
        dataGridView1.CurrentCell = dataGridView1.Rows[RowIndex].Cells[ColumnIndex];
        dataGridView1.BeginEdit(false);
    }
}

если какая-либо ячейка уже находится в режиме редактирования, то элемент управления для редактирования получит KeyPress события не DataGridView, Если вы хотите преодолеть это, вы должны создать подкласс существующего элемента управления DataGridView и переопределить его ProcessCmdKey функция. Смотрите ответ на этот ТАК вопрос для этого.

Чтобы изменить выбранный индекс для редактирования, подпишитесь на EditingControlShowing событие и в обработчике события изменить combobox индекс.

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    ComboBox control = e.Control as ComboBox;
    if (control !=null)
    {
       // set the selected index of the combo here.
    }
}
Другие вопросы по тегам