Рассмотрим 2 DataGridViews как с SelectionMode = RowHeaderSelect. В grid1 у меня есть 2 столбца; TextBox и CheckBox. В grid2 у меня есть 2 столбца; ComboBox и TextBox.DataGridView UserDeletingRow Not Firing
Когда я нажимаю на RowHeader, фокус переходит к первой ячейке, а не к RowHeaderCell. Когда я нажимаю кнопку DEL, содержимое ячейки удаляется (содержимое TextBox очищается, а ComboBox устанавливается на 1-й элемент).
Таким образом, событие UserDeletingRow никогда не срабатывает, так как в FAQ DataGridView говорится: «Пользователи могут удалять строки только тогда, когда текущая ячейка не находится в режиме редактирования, для свойства AllowUserToDeleteRows установлено значение true».
В качестве обходного пути я реализовал этот код в RowHeaderMouseClick
grid.CurrentCell = grid.Rows[rowIndex].Cells[columnName];
grid.Rows[rowIndex].Selected = true;
В случае СЕТКА1 я передать имя столбца CheckBox и костров событий UserDeletingRow при нажатии DEL. Однако для передачи grid2 имя столбца ComboBox не запускает событие.
Я пробовал следующее:
1- Выбрать RowHeaderCell -> Исключение, потому что оно не может быть выбрано.
2- grid.EndEdit() -> Без эффекта.
3- Измените SelectionMode на FullRowSelect, затем на RowHeaderSelect -> Cell настроен на режим редактирования.
Мой вопрос:
Мне нужно, чтобы UserDeletingRow срабатывал независимо от столбца сетки? Или обходной путь для выбора HeaderCell, если это возможно?
Редактировать (Краткая форма вопроса):
Нажатие RowHeader выбирает строку и помещает первую ячейку в режиме редактирования, если это применимо, таким образом, нажав на кнопку DEL удаляет содержимое ячейки и не срабатывает событие UserDeletingRow. В качестве обходного пути я выбираю ячейку, если она доступна, которая не может быть переведена в режим редактирования, например. CheckBoxColumn.
Это поведение по умолчанию при нажатии на RowHeader? Если да, можете ли вы показать мне обходной путь? Если нет, вы можете указать мне причину такого поведения?
Edit 2:
Я обнаружил, что установка в режим редактирования EditOnEnter делает щелкая RowHeader поставить первую ячейку в режиме редактирования. Я постараюсь это преодолеть, но любая помощь приветствуется.
Рад, что вы поняли это и я мог бы помочь; – M2X