Как назначить горячую клавишу для столбца комбинированного списка данных?
У меня есть вид сетки есть столбец со списком ["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.
}
}